0

Asp.Net Web API、エンティティ フレームワーク、SQL Azure を使用しています。私のソリューション ソリューションでは、データベースから生成された .edmx ファイルがあります。次のコード行のコンテキスト エンティティ。

public partial class Entities : DbContext     
{         
    public Entities(): base("name=Entities")
    {         }             
    protected override void OnModelCreating(DbModelBuilder modelBuilder)         
    {             throw new UnintentionalCodeFirstException();         }            
    public DbSet<Activity> Activities { get; set; }
}

これは、特定のデータベースに接続する必要があるユーザー ログインに基づくマルチテナント アプリケーションです。

shardId(フェデレーション ID)。

private Entities _db = new Entities();

インスタンスを dbcontext に作成する際に、Shardid に基づいて新しい接続を確立したいと考えています。

私は正しくやっていますか?新しい接続を動的に確立するにはどうすればよいですか?

4

1 に答える 1

0

あまりにも多くの時間を費やした後、私はそれを理解しました。それは私にはうまくいきます。

 var   customerEntity = new CrmEDMContainer(ConnectionStringCustomerDB());
                    var connection = new SqlConnection();
                    connection =(SqlConnection) customerEntity.Database.Connection;
                    connection.Open();
                    var command = new SqlCommand();                
                    string federationCmdText = @"USE FEDERATION Customer_Federation(ShardId =" + shardId + ") WITH RESET, FILTERING=ON";
                    command.Connection = connection;
                    command.CommandText = federationCmdText;
                    command.ExecuteNonQuery();
return customerEntity ;

EntityDatabase 接続を SqlConnection に変換する必要があり、通常の方法でフェデレーション コマンドを実行します。

CustomerEntity は、指定された shardId に対してクエリを実行し、適切なデータベースに接続します。

于 2013-09-24T08:02:50.253 に答える