2013-02-26 9 views
5

私は現在、同じDbContext(同じ構造の2つのデータベースがあります)をアプリケーションで使用しようとしています。私が間違っていることはよく分かりませんが、現在のコードはここにあります。うまくいけば、私がやろうとしていることがはっきりしているはずです。私はEF Database Firstを使用しています(下部のエラーが示唆していないようです)。Entity Framework - 異なる接続文字列を持つ同じDbContextを使用する

マイコンテキストファクトリコード:

public class HOLContextFactory 
    { 
     public static HOLDbEntities Create() 
     { 
      return new HOLDbEntities(); // Works 
     } 

     public static HOLDbQuoteEntities CreateQuote() 
     { 
      return new HOLDbQuoteEntities(); // Gives error 
     } 
    } 

public partial class HOLDbQuoteEntities : HOLDbEntities 
    { 
     public HOLDbQuoteEntities() 
      : base("HOLDbQuoteEntities") // This should send "HOLDbQuoteEntities" as the base connection string?! 
// Also tried "name=HOLDbQuoteEntities" 
      { 
      } 
     } 

のWeb.config接続文字列: "HOLDbQuoteEntities" を使用しているとき、私は取得しています

<add name="HOLDbEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 

<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/HOLDbContext.csdl|res://*/HOLDbContext.ssdl|res://*/HOLDbContext.msl;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> // using diff database - same structure 

エラー:

コードを使用して生成データベースファーストとモデルのT4テンプレート コードファーストで使用すると、最初の開発が正しく機能しない場合があります。mオード。 データベースファーストまたはモデルを引き続き使用するには フレームワーク接続文字列が、アプリケーションを実行する の設定ファイルで指定されていることを確認します。コードファーストは、属性やDbModelBuilderのAPIを使用して、任意の追加の 設定を追加してから この例外をスローするコードを削除して、 データベースファーストまたはモデルファーストから生成されたこれらのクラスを使用するには**

答えて

4

Entity Frameworkのは、実際のエンティティオブジェクトを使用する必要があります:

public class HOLContextFactory 
{ 
    public static HOLDbEntities Create() 
    { 
     // default connection string 
     return new HOLDbEntities(); 
    } 

    public static HOLDbEntities CreateQuote() 
    { 
     // specified connection string 
     return new HOLDbEntities ("HOLDbQuoteEntities"); 
    } 
} 

public partial class HOLDbEntities 
{ 
    public HOLDbEntities(string connectionString) 
     : base(connectionString) 
     { 
     } 
    } 
} 
+0

これは私が最終的にそれをやったか、実際に私はこれを試してみてくださいmetadata=res://*/

を使用して、私のエンティティのコンテキストを作成しています。 –

1

私は」私のプロジェクトの1つで同じことをしました。

<add name="HOLDbEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 

<add name="HOLDbQuoteEntities" connectionString="metadata=res://*/;provider=System.Data.SqlClient;provider connection string=<connstringdetails>" providerName="System.Data.EntityClient" /> 
関連する問題