4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

クラスライブラリからEntity FrameworkでSQL Serverにアクセスするとエラー発生

Posted at

#はじめに

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();
        }
    }

#エラー発生

すると以下のようなエラーが・・・

image

型 '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();
        }
    }

すると動くようになりました。
・・・イマイチ感ぱない。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?