2013-08-22 28 views
1

我們有一種情況。我們公司的Framework基於.net,由使用該框架開發的產品使用。現在這個框架首先使用EF代碼。我們希望通過生成的遷移定義來實現EF代碼遷移,因爲我們的實體存在於其中一個Framework項目中。所以我已經實現了它。但情況是,我們將這個框架作爲Nuget包(內部)分發給其他產品。通過nuget參考dll中的EF代碼遷移

現在情況可以說產品A正在使用包含xyz.dll的包,該包中包含已啓用遷移的xyz.dll。現在,「ProductA」的開發人員希望首先使用xyz.dll遷移來升級由Framework EF代碼創建的數據庫,但該dll僅作爲引用的dll添加。因此,在包管理器控制檯(如Update-Database)中運行命令不起作用,因爲項目不在當前解決方案及其參考DLL中

如何解決此問題?

回答

1

這實際上很容易解決,您添加nuget包的項目也需要引用EF。

實際上,你可以你的NuGet包內有依賴性如執行這樣的:在您的nuspec

<dependencies> 
     <dependency id="EntityFramework" version="4.2.0.0" /> 
    </dependencies> 

(顯然更新與您正在使用的一個版本)

參見:http://docs.nuget.org/docs/reference/nuspec-reference#Specifying_Dependencies

http://docs.nuget.org/docs/reference/versioning#Specifying_Version_Ranges_in_.nuspec_Files

周圍的扶養語法的工作原理

+0

但會是什麼我的更新命令看起來像 – user393014

+0

我知道依賴的事情,但我不認爲你明白我所描述的問題,當你打開包管理器控制檯的更多細節並運行update-database,如果你沒有提供帶參數的項目名稱,那麼它將採用包管理器控制檯中選擇的默認項目,所以它的拋出錯誤get-project失敗 – user393014

+0

更新數據庫命令包含在獲取導入的powershell中與EF nuget包。這意味着除非你的解決方案中包含了它,否則它不會在包管理器控制檯中可用。 –