2013-04-02 25 views
1

我先用代碼,已經存在的數據庫表t_News,包含字段 Id,NewsTitle,Content,AutoKeywords,Author。但我不希望實體包含字段作者 所以定義這個實體類:代碼先映射部分表字段

[Table ("t_News")] 
public class News 
{ 
    public int Id {get; set;} 
    public string NewsTitle {get; set;} 
    public string Content {get; set;} 
    public string AutoKeywords {get; set;} 
} 

運行時錯誤: 未處理的異常:System.InvalidOperationException:該模型支持的「PartCo ntext的」語境以來數據庫改變被創建。考慮使用代碼F irst Migrations來更新數據庫(http://go.microsoft.com/fwlink/?LinkId=2 38269)。

+0

你的數據庫中是否有一個名爲__MigrationHistory的表? – tschmit007

+0

是的,刪除它? – user2164641

+0

不,tnat表示數據庫已由EF創建。這也意味着,如果你想爲同一個數據庫有兩個不同的上下文(一個包含所有列,另一個包含其中的一些),你將不得不等待EF6。關於放下桌子......這是可能的,但是你將失去EF的遷移功能。 – tschmit007

回答

0

您應該首先創建遷移。類似這樣的:

Add-Migration "YouMigrationName" -ConnectionString "Data Source=.; Integrated Security=True; Pooling=False; MultipleActiveResultSets=true;" -ConnectionProviderName System.Data.SqlClient 

比你必須更新你的數據庫。這裏也有一些類的實例:

Update-Database -ConnectionString "Data Source=.; Integrated Security=True; Pooling=False; MultipleActiveResultSets=true;" -ConnectionProviderName System.Data.SqlClient 
+0

我還想保留數據表 – user2164641

+0

@ user2164641中的「作者」字段,在這種情況下EF5遷移不是這樣,該列將被刪除。 – tschmit007

0

由於__MigrationHistory表存在你是不是真正的「代碼首先現有的數據庫上」的情況下,作爲數據庫的創建,在某種程度上,通過EF。

因此您可以刪除__MigrationHistory。這將使您「在現有數據庫中首先編寫代碼」。但你必須考慮你放棄的東西。這至少是EF的遷移功能。所以你必須問你:爲什麼這個數據庫是由EF創建的? __MigrationHistory只會影響我嗎?