1

我刚刚安装了 VS 2012 Premium,并且一直在关注 PluralSight ASP.Net MVC 4 教程。我在第 4 章,项目使用 EF 4 Code First 自动创建数据库。

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

在 Restaurant.cs 我有:

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

但是,它在 OdeToFoodDB dbo.Restaurants 表中生成:

  • ID(PK,int,不为空)
  • 名称 (nvarchar(max), null)
  • Address_Street (nvarchar(max), null)
  • Address_City (nvarchar(max), null)
  • Address_State (nvarchar(max), null)
  • Address_Country (nvarchar(max), null)

但类中没有 Street、City、State 和 Country 属性。在视频中,数据库只有 ID、Name 和 Address 列,但我不知道这是否与他在 EF 处于预发布状态时使用的事实有关。新的 EF 是否有一些重要的假设?

有谁知道这里发生了什么?

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

4

1 回答 1

2

您所看到的都是设计使然。Address是一个复杂类型,这就是复杂类型在数据库表中的表示方式。

在这里寻找关于这个例子的解释。

于 2012-09-05T05:05:11.353 回答