每次我开始研究一个新项目时,我都会和自己进行一场心理辩论,而我正在设计我的POCO.我看过很多教程/代码示例似乎都支持外键关联:
public class Order
{
public int ID { get; set; }
public int CustomerID { get; set; } // <-- Customer ID
...
}
Run Code Online (Sandbox Code Playgroud)
与独立协会相反:
public class Order
{
public int ID { get; set; }
public Customer Customer { get; set; } // <-- Customer object
...
}
Run Code Online (Sandbox Code Playgroud)
我以前使用过NHibernate,并且使用了独立的关联,它们不仅感觉更多OO,而且(延迟加载)的优势在于可以让我访问整个Customer对象,而不仅仅是ID.例如,这允许我检索Order实例,然后Order.Customer.FirstName无需显式地进行连接,这非常方便.
所以回顾一下,我的问题是:
我有一些看起来像这样的域类,我想用Code First建模(在EF 4.3中).
public class Foo {
// ...
}
public class Bar {
// ...
public Foo Foo { get; set; }
}
public class Baz {
// ...
public Foo Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我看到的每个例子中,在Foo类中添加了外来对象引用.我的Foo班级可以Bar和Baz班级无关,还是我真的需要做这样的事情?
public class Foo {
// ...
public virtual Bar { get; set; }
public virtual Baz { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
根据这个答案,类就需要有导航属性.我是Code First的新手,所以有人可以解释为什么会出现这种情况吗?有没有办法可以Foo通过使用Fluent API 来避免像这样污染我的类? …