我一直在使用Entity Framework Code First遷移一段時間,並且喜歡認爲我很瞭解基礎知識。但是,昨天我遇到了一個很奇怪的問題,我似乎找不到解決辦法。實體框架 - 添加遷移爲外部程序集創建實體
我已經添加了一個DLL的引用(第三方 - 我自己沒有開發),它有我需要在我的實體上的一些接口。該DLL包含一些其他的東西 - 比如一些類 - 我們不需要和不使用。
現在引用並實現一些接口 - 當我使用Add-Migration命令添加一個遷移時,Entity Framework似乎挑選了DLL中的一些類,並嘗試爲它們創建表遷移。
例如,我在我的項目中有一個「用戶」實體。我添加了對ThirdParty.dll的引用,其中包含一個IThirdPartyUser接口。該DLL還包含我沒有使用的UnusedClass,- 它不是以任何方式的我的上下文的一部分。
當我創建一個遷移時,我得到代碼來爲UnusedClass創建數據庫表。例如:
CreateTable(
"dbo.UnusedClass",
c => new
{
Id = c.Int(nullable: false, identity: true),
RegistrationNumber = c.Int(),
})
現在,我的理論是,這個外部組件(不正確地)對實體框架一些依賴 - 但我想不出爲什麼遷移嘗試生成數據庫代碼的方式 - 特別是,因爲他們不屬於我的背景。
以前有人遇到過這個嗎?我即將開始嘗試錯誤練習,試圖找到問題的根本。
我想我已經取得了一些進展。一些未使用的類的名稱中帶有「ID」的屬性,我認爲實體框架正在使用其約定作爲實體進行提取。我有模型忽略有問題的類 - 但有什麼辦法排除整個命名空間/ DLL中的類,或者以這種方式關閉約定?不喜歡EF正在查看每個類似於此的每個DLL中的每個類的事實。 – stevehayter