在一个模型ASP.Net MVC 4中创建多个表

时间:2012-12-05 20:57:36

标签: entity-framework database-design ef-code-first normalization

我有一个代表一个人不同方面的人物模型。在我的模特中,我有以下内容:

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表有一对多的关系。如果你能做到这一点是一个好主意,让所有在一个模型。在过去,我创建了单独的模型,但我怀疑是否有必要。

1 个答案:

答案 0 :(得分:1)

您所指的是database normalization。一般来说,您希望在模型中看到多对一或多对多关系的同时规范化数据。

主要问题是,一个人是否总会拥有一个地址/电话?如果是这样,将它们与您的Person模型保持一致可能是有意义的。如果他们可能(现在或将来)有多个地址/电话,那么几乎总是最好将它们标准化为不同的模型。

即使你现在不需要多个地址/手机,你可能需要在某个时候,因此,大多数人会选择像这样规范化相关的。

另一个好处是,这将允许您将类型分配到您的地址(送货/结算)和电话(单元/家庭/工作)。

如果我是你,我会考虑设置一个地址和电话模型,并通过List<>(或其他IEnumerable<>)将它们作为与您的人的一对多关系。< / p>

相关问题