我有一个代表一个人不同方面的人物模型。在我的模特中,我有以下内容:
public class PersonsContext : DbContext
{
public PersonsContext()
: base("SiteDBCon")
{
}
public DbSet<Person> Persons { get; set; }
public DbSet<UserProfile> UserProfiles { get; set; }
}
public class Person
{
public int ID { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public string Race { get; set; }
public string Ethnicity { get; set; }
public int UserId { get; set; } //User who input data
public UserProfile UserProfile { get; set; } //User who input data
}
然而,有些东西可以有一个人可以有多个条目,地址 - 当前的前一个,电话号码当前的前一个等等。所有这些我想要在单独的表中。我可以在PersonModel中添加这些表,还是需要为每个表创建一个新模型,例如。 AddressModel,PhoneModel?他们都将与Person表有一对多的关系。如果你能做到这一点是一个好主意,让所有在一个模型。在过去,我创建了单独的模型,但我怀疑是否有必要。
答案 0 :(得分:1)
您所指的是database normalization。一般来说,您希望在模型中看到多对一或多对多关系的同时规范化数据。
主要问题是,一个人是否总会拥有一个地址/电话?如果是这样,将它们与您的Person模型保持一致可能是有意义的。如果他们可能(现在或将来)有多个地址/电话,那么几乎总是最好将它们标准化为不同的模型。
即使你现在不需要多个地址/手机,你可能需要在某个时候,因此,大多数人会选择像这样规范化相关的。
另一个好处是,这将允许您将类型分配到您的地址(送货/结算)和电话(单元/家庭/工作)。
如果我是你,我会考虑设置一个地址和电话模型,并通过List<>
(或其他IEnumerable<>
)将它们作为与您的人的一对多关系。< / p>