#はじめに
Entity Frameworkを使ったデータ登録処理をクラスライブラリプロジェクトに置いてバッチとWebから使おうと思い、以下のようなメソッドを作成し、バッチ側から呼び出した。
public class Class1
{
public static void AddTest()
{
DataEntities e = new DataEntities();
var b = new Book() {
//投入データ設定
};
e.Book.Add(b);
e.SaveChanges();
}
}
class Program
{
static void Main(string[] args)
{
Class1.AddTest();
}
}
#エラー発生
すると以下のようなエラーが・・・
型 'System.InvalidOperationException' のハンドルされていない例外が mscorlib.dll で発生しました
追加情報:不変名が 'System.Data.SqlClient' の ADO.NET プロバイダーのアプリケーション構成ファイルに登録された Entity Framework プロバイダー型 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' を読み込めませんでした。assembly-qualified 名が使用されていること、およびアセンブリを実行中のアプリケーションで使用できることを確認してください。詳細については、http://go.microsoft.com/fwlink/?LinkId=260882 を参照してください。
「'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' を読み込めませんでした。」とな・・・
#原因
検索して以下のページに行き当たる。
Entity Framework Provider type could not be loaded?
曰く、EntityFramework.SqlServer.dllが無い事がエラーの原因らしく、Debugフォルダを確認すると確かに見当たらない。
記事を参考に1行追加して以下のように修正。
public class Class1
{
public static void AddTest()
{
//◆追加
var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
DataEntities e = new DataEntities();
var b = new Book() {
//投入データ設定
};
e.Book.Add(b);
e.SaveChanges();
}
}
すると動くようになりました。
・・・イマイチ感ぱない。