【发布时间】:2016-12-03 00:54:53
【问题描述】:
我有这些实体类(简化):
public class MyClass
{
int Id {get;set;}
int MyObjectId {get;set;}
MyObject MyObject {get;set;}
}
public class MyObject
{
int Id {get;set;}
string Name {get;set;}
ICollection<MyClass> MyClass {get;set;}
}
流畅的映射
HasRequired(x => x.MyObject).WithMany(x => x.MyClass)
.HasForeignKey(x => x.MyObjectId).WillCascadeOnDelete(false);
我刚开始学习EF,所以我有两个问题
我可以避免使用 MyObjectId 告诉 EF 如何映射事物,还是应该摆脱 MyClass 中的 MyObject 类并改用 MyObjectId,并且每当我需要从表中提取嵌套数据时它由 MyObjectId 吗?在这一点上,两者兼而有之感觉并不合适。
Fluent api 要求我在 MyObject 中引用 MyClass 只是为了指定 WithMany 属性,我实际上不需要从 MyObject 访问 MyClass - 任何指导?
我想我已经习惯了 nHibernate...
【问题讨论】:
-
你遇到过
[ForeignKey]属性吗? -
是的,但是我问的是fluent api的事情,这是使用它的缺点吗?
-
您的问题与查询或创建数据库有关吗?
-
我认为两者都是,我仍然需要有效的映射来创建数据库,但在查询方面我不希望 MyClass 有 MyObjectId 和 MyObject 因为我可以访问 MyObject.Id 这没有任何意义两者都保留,除非这是 EF 的工作方式。也许我做错了,我的实体不应该包含复杂的对象,只是数据库复制。这将涉及 automaper 从其他实体中提取数据并将结果映射到 viewModel
标签: c# entity-framework-6