EF4 Fluent スキーマのラッパーを作成していIRepository
ます。IUnitOfWork
この設計では、DbCompiledModel
はアプリケーションのライフサイクルごとに 1 回作成されます (NHibernate のようにISessionFactory
)。は、すべてのDbCompiledModel
場合と同様に、既存のデータベース接続を想定していますDbContexts
。
これはDbCompiledModel
工場です:
public class DbCompiledModelFactory
{
public static DbCompiledModel Build(
string mappingAssembly, DbConnection connection)
{
DbModelBuilder modelBuilder = new DbModelBuilder();
AddMappingsFromAssembly(modelBuilder, mappingAssemblyName);
DbModel model = modelBuilder.Build(connection);
return model.Compile();
}
}
がDbCompiledModel
作成されると、新しいDbContext
を使用して作成できます。new DbContext(connection, compiledModel, true)
そのため、私は 2 つの選択肢に直面してDbConnection
います。アプリケーションのライフサイクル全体で 1 つを共有するかDbConnection
、モデル構築プロセスのためだけに存続期間の短いものを作成し、 DbConnection
a が作成されるたびに新しいDbContext
ものを作成します。
私が見落としていた接続を管理するためのより効果的な方法はありますか?