何时在模型中创建导航属性

时间:2014-09-17 23:30:31

标签: asp.net-mvc entity-framework entity

作为一名新程序员,我试图了解何时应该为我的模型创建导航属性。有什么权衡?

在极端情况下,模型可以只包含字段需求,或者基本模型可以为每个字段提供导航属性?

或者导航属性是否应仅用于复杂的相关实体(具有多个属性的实体)?

我正在考虑的另一个考虑因素是最适合MVC下拉或jquery自动完成的问题。如何设计模型影响应用程序和SQL性能?

public class Vendor 
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Number { get; set; }
    public string Address { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string PostalCode { get; set; }
    public string Country { get; set; }
}

或者我可以这样做并假设相关的表也存在于命名空间中,反过来又存在于数据库中。

public class Vendor 
{
    public int ID { get; set; }
    public virtual Name Name { get; set; }
    public virtual Number Number  { get; set; }
    public virtual Street Street { get; set; }
    public virtual City City { get; set; }
    public virtual State State { get; set; }
    public virtual PostalCode PostalCode { get; set; }
    public virtual Country Country { get; set; }
}

我可以看到一些相关实体在状态上会像国家一样是静态的,但数字和街道会随着时间的推移而增长。

1 个答案:

答案 0 :(得分:0)

如果您的属性可以由简单的数据库列表示,那么您使用第一种方法,如果您的属性本身具有自己的属性,那么您将需要一个导航属性。如果你的情况,如果城市也有Id,Name等属性,那么你将使用导航属性,但是,如果你只想存储城市作为名称,你的第一种方法将起作用。