Я пишу оболочку IRepository
и IUnitOfWork
для схемы EF4 Fluent.
В этом проекте DbCompiledModel
создается один раз за жизненный цикл приложения (как 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)
Таким образом, я сталкиваюсь с двумя вариантами: либо поделиться одним DbConnection
на протяжении всего жизненного цикла приложения, либо создать кратковременный DbConnection
только для процесса построения модели, а новый DbConnection
- при создании DbContext
.
Есть ли более эффективный способ управления соединениями, который я пропустил?