我正在爲EF4 Fluent架構編寫一個IRepository
和IUnitOfWork
包裝器。如何在實體框架中使用DbModelBuilder時管理連接?
在此設計中,每個應用程序生命週期創建一個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
貫穿全應用程序生命週期,或創建僅用於模型構建過程的shortlived DbConnection
,以及創建DbContext
時創建新的DbConnection
。
是否有更有效的方式來管理我忽略的連接?
EF緩存每個應用程序占主導地位的'DbCompiledModel'。爲什麼要複製該功能? – Eranga
我想在EF的頂部有知識庫/單元工作層,因爲我可能想在以後的日期將EF替換爲另一個ORM。 – duck9
你沒有回答我的問題。 ORM更換/切換將是一件非常困難的事情。你在浪費不必要的抽象時間。 – Eranga