當我們在創建 Service Fabric 項目后,想要利用 Entity Framework 的 CodeFrist 將數據插入數據庫時可能會遇到以下問題。
問題描述
使用 Visual studio 中的 nuget 管理將 Entity Framework 引入 Service Fabric 項目后,開啟 Enable-Migrations,會提示 Application 項目沒有安裝 EntityFramework。
當我們嘗試在 Application 中引入 EntityFramework 時報錯:
Install-Package : Failed to add reference. The package 'EntityFramework' tried to add a framework reference to 'System.ComponentModel.DataAnnotations' which was not found in the GAC. This is possibly a bug in the package. Please contact the package owners for assistance.
解決方法
我們以 Stateless 類型的 Service Fabric 項目為例:
1.首先要確保在執行 Enable-Migrations 的時候,設定的 Default project 為 stateless project (如下面的例子:MyStateless ):
該 Service Fabric 項目的結構如下:
2.保證 stateless project (例如:MyStateless) 已被設置為 Single startup Project:
3.由于 Enable-Migrations 依賴于 MyDbContext Class,因此需要建立了一個 xxx.cs 的文件,在這個文件中對該類進行定義:
4.運行 Enable-Migrations 命令時要指定 ContextTypeName 為之前 xxx.cs 文件中的 MyDbContext Class,例如:Enable-Migrations -contexttypename MileyClass.MyDbContext。
查看運行結果可以點擊此處。