2012-09-05 25 views
1

我刚刚安装了VS 2012 Premium,我一直在关注PluralSight ASP.Net MVC 4教程。我在第4章,该项目使用EF 4 Code First自动创建数据库。为什么在VS 2012中使用Code First时,Entity Framework 4会生成额外的列?

奇怪的是,它创建额外的数据库列而不是匹配我的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(最大),NULL)
  • Address_Street(为nvarchar(最大),NULL)
  • ADDRESS_CITY(为nvarchar(最大),NULL)
  • ADDRESS_STATE(为nvarchar(最大),NULL)
  • ADDRESS_COUNTRY(为nvarchar(最大),NULL)

但没有街道,城市,州,和在类国家属性。在视频中,数据库只有ID,名称和地址列,但我不知道这是否与他在使用EF时处于预发布状态的事实有关。新的EF有什么大的假设?

有没有人有任何想法这里发生了什么?

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

+0

你可以显示映射吗?我认为你已经将'地址'映射为'Restaurant'的一个复杂属性。 – Eranga

+0

对不起,但我该怎么做?它是否与“实体框架电动工具Beta 2”有关?这是我在Google上找到的唯一EF映射信息。 –

+0

您是否重写了'DbContext'类的'OnModelCreating'方法? – Eranga

回答

2

你看到的是设计。 Address是一个复杂类型,这是如何在数据库表中表示复杂类型。

查看here了解关于这个例子的解释。

相关问题