首先,我在腳下開槍自殺。我建立一個測試應用程序(這是工作相關的,不是學校BTW)。我有一個外鍵屬性代碼優先/ EF6中的固定模型/列映射
Home_TeamId
一個模型映射成一列叫做在我的數據庫
Home_TeamId
。一切都很開心,直到我重構了所有使用ID而不是Id的東西。我沒有注意到移民增加了一個名爲Home_TeamID1列並在那裏保存,而不是Home_TeamId數據
所以我想要做的是什麼(我想要它。):
降列Home_TeamID1(沒問題,我可以那樣做。)
將Home_TeamId重命名爲Home_TeamID。 (沒問題,我可以那樣做。)
告訴EF將數據寫入原始列。
我讀過如何在使用的DbContext數據庫映射,但是這不是我想要做的是(即,這是一次性的事情,不是我需要做的)(順便說一句,沒有.edmx文件)
所以這就是問題 - 我如何告訴EF將域模型中的Home_TeamID字段寫入表中的Home_TeamID列?
我應該補充一點,自那時以來我做了另一次遷移,所以它不是(必然)如此簡單以至於只返回一個修訂版本。
編輯1: EF已將相同的Team ID寫入Home_TeamID和Home_TeamID1列,儘管它已將..ID1文件作爲外鍵。
我已經在我的項目中查找了文本「ID1」(文本和二進制Unicode),並且它顯示的唯一位置在* _migration.cs文件中。
在此期間,我已經嘗試過上述步驟1和2。而現在(預期)我得到:
InnerException: System.Data.SqlClient.SqlException HResult=-2146232060
Message=Invalid column name 'Home_TeamID1'.
Invalid column name 'Visitors_TeamID1'.
編輯2:
我嘗試這樣做:
- 創建一個全新的(空白數據庫)
- 排除所有的.cs文件從項目遷移
- 添加遷移InitialRecreate
- 查看生成的.cs文件並刪除了任何參考ID1。 (實際上,有兩個...他們從哪裏來的?)
- 在項目中找到並找到0個對ID1的引用。
- 更新數據庫
- 冉項目
- 無效的列名稱Home_TeamID1「。
所以顯然問題不在於數據庫本身。
model屬性已被重命名,但原始數據庫列沒有?你的數據庫是否區分大小寫? – jjj
不,發生的事情是我在模型中以某種方式結束了這兩種情況,但由於數據庫不區分大小寫,它拋出了SQL錯誤(兩次添加相同的參數)。 – Duston