0

エンティティ フレームワーク (v4.4) コンテキストの接続文字列を動的に変更しようとすると、次のエラーが発生します。

System.AccessViolationException が処理されませんでした

メッセージ: 保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。

エラーの原因となるコードは次のようなものです (名前を変更しました)。

private Project1.Data.Context _db;

public ConstructorMethod(string connectionString ="")
{
    _db = new Project1.Data.Context();
    _db.Database.Connection.ConnectionString = connectionString;
}

データアクセスメソッドを保持するのはDAOクラスであり、コンストラクターで接続文字列を渡したいのですが、何らかの理由でそれを機能させることができません。コンストラクターを介して接続文字列を渡すことを実現する他の方法はありますか?

このエラーに関するこのサイトのすべての投稿は、EF とは無関係のようです。

編集 最小限のコードで別のプロジェクトを試すとき。次のエラーが発生しました:

サポートされていないキーワード: 'メタデータ'

それが私が以下に投稿している解決策を見つけることにつながりました。MVC 4 アプリケーションで動作しているように見えるので、なぜこれが起こったのか知りたいです。

4

1 に答える 1

1

生成されたコンテキストクラスファイルに接続文字列を渡すことができるコンストラクターを追加すると、問題が解決しました

public SomeContext(string connectionStringOrName)
        : base (connectionStringOrName)
    {
    }

同じバージョンの Entity Framework を使用している他のプロジェクトでも上記のように機能するため、エラーが発生した理由を知りたいです。

于 2013-02-22T08:54:16.967 に答える