2012-09-05 22 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瞭解關於這個例子的解釋。

相關問題