请看下面的POCO:
public class Country
{
[Key]
public Guid ID { get; set; }
[Required]
public virtual Currency Currency { get; set; }
}
public class Currency1
{
[Key]
public Guid ID { get; set; }
public virtual ICollection<Country> Countries { get; set; }
}
public class Currency2
{
[Key]
public Guid ID { get; set; }
}
我不确定我需要导航属性,例如Currency1中的ICollection。如果涉及到EF CodeFirst,我发现创建的数据库结构没有区别。 Currency1和Currency2的表对我来说几乎一样。那么为什么或何时添加这个额外的属性是有意义的呢?
当然,只考虑POCO,我了解到我无法从Currency2对象访问任何国家/地区。例如:
var a = currency1.Countries; // works fine
var b = currency2.Countries; // does not even compile
但这是唯一的区别吗?换句话说:如果我不需要从Currency2对象访问国家/地区,那么为了EF的目的,不需要在Currency2类中添加相应的导航属性?有点困惑......
答案 0 :(得分:1)
导航属性既可用于直接访问(如您所述),也可用于linq-to-entities查询。如果您不打算使用它,可以将其从模型中删除。请注意you need a navigation property on at least one side能够使用代码优先方法为数据库创建建模。