簡體   English   中英

在Entity Framework中使用DbModelBuilder時如何管理連接?

[英]How to manage connections when using DbModelBuilder in Entity Framework?

我正在為EF4 Fluent模式編寫一個IRepositoryIUnitOfWork包裝器。

在這種設計中,每個應用程序生命周期都會創建一次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 ;而在創建DbContext創建一個新的DbConnection

有沒有更有效的方法來管理我忽略的連接?

僅需要連接本身來標識ADO.NET提供程序和清單令牌。 Build方法具有接受DbProviderInfo實例的版本重載。 此重載由接受DbConnection重載在內部調用。 因此,如果您不喜歡使用DbConnection的版本,則可以直接使用DbProviderInfo調用該版本。

如果您知道以后需要另一個ORM,請不要使用EF。 只有支持所有ORM並以僅使用它們之間共享功能的方式設計應用程序,才可以設計支持多個ORM的應用程序。 恕我直言,不再需要一個ORM來支持它,而替換ORM總是意味着對應用程序進行了更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM