我有一個剛剛開始使用EF遷移的項目。定位遷移源
存在初始遷移和額外的手動編輯遷移,該遷移定義了索引視圖。沒有其他遷移。
我最近添加了一個屬性到一個類。當我創建一個新的模式時,該屬性被創建。但是,我不明白爲什麼會創建它,因爲在任何遷移中都沒有提及該屬性。
如果我搜索整個源代碼文件夾(包含子文件夾,。)以提供該屬性名稱,它不會出現在任何EF遷移代碼中(它只出現在定義它的類中,並且在訪問該屬性的幾行代碼中)。
當我在兩個現有遷移的Up()方法的開始和結束處設置斷點時,我可以看到,通過初始遷移(在SSMS中驗證)創建的表沒有附加屬性,而且該屬性在最後一次Up()遷移結束時還不存在。在控制離開上次遷移後的某個時間,某些代碼會在數據庫中爲此其他屬性創建一個列。
要嘗試跟蹤這一點,我將這個新屬性手動編輯到初始遷移中。現在,在上次遷移的Up()方法退出後,我得到一個SqlException
每個表中的列名必須是唯一的。表'dbo.MyTable'中的列名'MyNewProperty'被多次指定。
在我的DbContext的構造函數中。
堆棧跟蹤僅顯示實例化DbContext的代碼。
如何追蹤此額外遷移的來源?
是否啓用自動遷移?在'Migrations'文件夾中,你應該有一個'Configuration'類,看看'AutomaticMigrationsEnabled'的構造函數。 – Lukazoid 2014-09-10 19:59:43
@Lukazoid:是的,自動遷移已啓用。 – 2014-09-10 20:08:24
那麼這將是新列的來源,自動遷移意味着Entity Framework將自動將您的域實體上的任何新屬性映射到SQL列。 – Lukazoid 2014-09-10 20:11:32