簡體   English   中英

具有空 DbContext-Constructor 的實體框架 6.0

[英]Entity Framework 6.0 with empty DbContext-Constructor

我有一個適用於 3 家公司的 ASP-WebForms-Application。 每家公司都有自己的數據庫和自己的 EDMX 模型。 數據庫中的結構是相同的。 在參數上,我正在檢查它是哪家公司,並希望為所有模型擁有一個 DbContext。

我是實體框架的新手,不知道如何為幾個模型制作一個上下文。

我試圖制作一個 class 給我一個 DbContext,我想在其中使 DBContext 成為模型之一。

我在嘗試:

public static DbContext holeDbContextWsvWsbSvs()
    {
        DbContext context = new DbContext();
        string verbandKürzel = config.holeVerbandKürzel();
        if (verbandKürzel == "wsv")
        {
            context = new wsvEntities();
        }
        else if (verbandKürzel == "wsb")
        {
            context = new wsbEntities();
        }
        else if (verbandKürzel == "svs")
        {
            context = new svsEntities();
        }
        return context;
    }

但在 Entity Framework 6.0 中,似乎不可能使用 emtpy 構造函數!

是否可以初始化 Null(Fake,Pseudo)-DbContext 或其他東西,然后將其更改為模型上下文?

誰能給我一個沖動,我怎樣才能實現我的計划?

編輯:好的,通過為構造函數提供任何字符串來實現方法內的 Model 的上下文更改。 但是,雖然在方法內部給 Context 一個特定的 Model,我返回一個 DbContext 之后不能使用 Object-Attributes。

有什么建議么? 或者真的必須在每個 position 我需要使用 DataModel IF-ELSE 並為每個 Model 執行相同的邏輯?

如果 DbContext 的結構相同並且您只想指向三個數據庫之一,則無需聲明 3 個單獨的 DbContext,只需一個,然后使用 Constructor 參數指定適當的連接字符串。

public class AppDbContext : DbContext
{
    // Define DbSets etc.

    public AppDbContext(string connection) 
        : base (connection)
    { }
}

然后在您的初始化代碼中:

public AppDbContext holeDbContextWsvWsbSvs()
{
    string verbandKürzel = config.holeVerbandKürzel();
    switch (verbandKürzel)
    {
        case "wsv":
            return new AppDbContext("wsvEntities");
        case "wsb":
            return new AppDbContext("wsbEntities");
        case "svs":
            return new AppDbContext("svsEntities");
        default:
            throw new InvalidOperationException("The configured client is not supported.");
    }
}

假設您有分別稱為“wsvEntities”、“wsbEntities”和“svsEntities”的連接字符串。

如果 DbContexts 在結構上不相同,那么老實說,您可能會遇到更大的問題,這些問題無法通過基礎 DbContext 公開它們來解決。

暫無
暫無

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

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