4

ローカルで開発中に、MultipleActiveResultSetsをTRUEに設定して接続文字列を設定しました。しかし、私は私のアプリケーションを展開し、sequelizerのconnectionStringが注入されると、MultipleActiveResultSetsは省略されます。 MultipleActiveResultSetsを有効にするか、そうでない場合は接続文字列を更新する必要はありますか?Sequelizerアドオンを使用してappharborで実行されているアプリケーションでMultipleActiveResultSetsを有効にするにはどうすればよいですか?

私はEntity Framework 4.1を途中で使用しています。

+0

あなたならば、私は思いますSQLSERVER_CONNECTION_STRINGを注入するのではなく、独自の接続文字列を使用してください。 appharborがあなたのDBを移動することに決めた場合、それはあなたのアプリを壊すでしょう。 –

答えて

7

更新:Sequelizerの管理パネルを使用して、挿入された接続文字列に対して複数のアクティブ結果セット(MARS)を有効にできるようになりました。これは、起動

URIがアプリケーションweb.configに注入さからあなたがたconnectionStringを構築することができます中にAppDomainリロードが発生しweb.configはもはや変更する必要があるため、推奨されるアプローチです。プロセスはhereに記載されているが、私はあまりにも、以下のスニペットを含めています:

var uriString = ConfigurationManager.AppSettings["SQLSERVER_URI"]; 
var uri = new Uri(uriString); 
var connectionString = new SqlConnectionStringBuilder 
{ 
    DataSource = uri.Host, 
    InitialCatalog = uri.AbsolutePath.Trim('/'), 
    UserID = uri.UserInfo.Split(':').First(), 
    Password = uri.UserInfo.Split(':').Last(), 
    MultipleActiveResultSets = true, 
}.ConnectionString; 

注意MultipleActiveResultSets = true

あなたはまた、非コードファーストれたconnectionStringを構築する必要がある場合は、その後、残りのEntityConnectionStringBuilderを使用する必要があり、例えば:

var builder = new EntityConnectionStringBuilder(); 
builder.ProviderConnectionString = connectionString; 
builder.Metadata = "somemetadata"; 
builder.Provider = "System.Data.SqlClient"; 

(もanswered on the AppHarbor support forum

+0

応答ありがとう!どこで適切な場所に接続文字列を作成するのですか?一度は、アプリの起動は十分ですか?または、シーケンスライザーの接続文字列は、アプリのライフサイクル全体を通じて動的に変更され、更新する必要がありますか?私はこの部分が私が失われている場所だと思います。 – stephen776

+0

私はこのコードをアプリ起動時に接続文字列がまだ私のWeb設定(MARSを有効にしていないもの)に注入されているかどうかのようです。 – stephen776

+0

変更された接続文字列を使用するように、EFコンテキストコンストラクタを変更することができます。https://github.com/friism/folketsting/blob/master/FT.Data/DB.Designer.cs#L81 – friism

関連する問題