0

请查看以下 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 对象访问国家/地区,是否不需要在 Currency2 类中添加相应的导航属性以用于 EF?这里有点糊涂...

4

1 回答 1

1

导航属性用于直接访问(如您所述)或用于 linq-to-entities 查询。如果您不打算使用它,可以将其从模型中移除。请注意,您至少需要一个导航属性才能使用代码优先方法对数据库实现建模。

于 2011-03-23T09:53:23.203 回答