为什么实体框架4在VS 2012中使用代码优先时会生成额外的列



我刚刚安装了VS 2012 Premium,我一直在学习PluralSight ASP.Net MVC 4教程。我讲的是第4章,该项目使用EF 4 Code First自动创建了一个数据库。

奇怪的是,它创建了额外的数据库列,而不是匹配我的Restaurant.cs模型文件中的属性。

在餐厅.cs我有:

namespace OdeToFood.Models
{
    public class Restaurant
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public Address Address { get; set; }
    }
}

但是,在OdeToFoodDB dbo中。它生成的餐厅餐桌:

  • ID(PK,int,不为null)
  • 名称(nvarchar(max),null)
  • Address_Street(nvarchar(max),null)
  • Address_City(nvarchar(max),null)
  • 地址状态(nvarchar(max),null)
  • Address_Country(nvarchar(最大值),null)

但是类中没有街道、城市、州和乡村属性。在视频中,数据库只有ID、Name和Address列,但我不知道这是否与他在EF处于预发布状态时使用EF有关。新的外汇基金是否有一些重大假设?

有人知道这里发生了什么吗?

我已经删除了生成的数据库、obj和bin中的文件,重新创建了Restaurant.cs类,卸载了EF4,并添加了EF5,但最终结果没有任何变化。我仍然得到那些与我的Restaurant.cs文件无关的额外专栏。

您所看到的是经过设计的。Address是复杂类型,这就是复杂类型在数据库表中的表示方式。

请看这里对这个例子的解释。

最新更新