簡體   English   中英

切換EF數據庫時使用相同的linq

[英]Using the same linq when switching EF database

我有一個使用實體框架訪問並對其運行LINQ查詢的SQLServer數據庫。 用C#完成。 工作正常。

下一步,我想更改Connectionstring,因此它指向結構完全相同的第二個數據庫並運行LINQ查詢。

C#-> LINQ被強類型化,無法解析和編譯。

我嘗試創建提供連接字符串的dbContext對象,但是LINQ對象(表名)無法解析。

我嘗試過使用switch語句在上下文之間進行切換。

我已經嘗試過“ DaContext.Database.ExecuteSqlCommand”,但這不是一個選擇,因為我必須重寫所有LINQ才能使用基本SQL。

實現這一目標的最佳方法是什么?

DbContext DaContext;

// Here I changed the connectionstring dynamically
DaContext = new DbContext("HEADCOUNT_NEW_Entities");

// Here I tried a switch statement
switch (APPLICATION_ID)
{

case "HEADCOUNT_NEW":
    DaContext = new WebApplication7.Models.Db_Entities.HEADCOUNT_NEW_Entities();
    break;

case "POSTS_NEW":
    DaContext = new WebApplication7.Models.Db_Entities.POSTS_NEWEntities();
    break; 

// way more Databases to add here, same structure

}

DaContext.Database.ExecuteSqlCommand ("exactly not what i want to do..........");

// This does not resolve the TABS table in LINQ
var jsonData = DaContext.TABS
.Select(c => new { c.TAB_CONTENT, c.TABLE_NAME, c.SORT_SEQUENCE, c.LEVELS })
.Distinct()
.OrderBy(c => c.SORT_SEQUENCE)
.ToList();

// More LINQ to follow...

期望用戶登錄,使用具有相同LINQ的其他EF數據庫。

任何指針表示贊賞。

您已經創建了兩個不同的數據庫上下文:

  • WebApplication7.Models.Db_Entities.HEADCOUNT_NEW_Entities
  • WebApplication7.Models.Db_Entities.POSTS_NEWEntities

在一個代碼上運行的代碼在另一個代碼上不起作用,因為它們是不同的,它們具有不同的實體集。 此外,您甚至沒有使用這些上下文,而是嘗試使用框架中的基本DbContext類型,該類型沒有實體集:

DbContext DaContext;

擺脫數據庫上下文之一及其所有實體。 您根本不需要重復代碼。 只需使用與您的數據庫架構匹配的上下文即可。 例如:

var daContext = new WebApplication7.Models.Db_Entities.HEADCOUNT_NEW_Entities();
// now you can query the entity sets on daContext

完成后,請回到原始任務:

我想更改Connectionstring,因此它指向結構完全相同的第二個數據庫

連接字符串位於配置中,而不是代碼中。 不要更改任何代碼 只需在應用程序的配置中更新連接字符串即可。 例如,在.config文件中:

<configuration>
  <connectionStrings>
    <add name="HEADCOUNT_NEW_Entities" connectionString="CONNECTION STRING GOES HERE" providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

或在.json文件中:

{
  "ConnectionStrings": {
    "HEADCOUNT_NEW_Entities": "CONNECTION STRING GOES HERE"
  }
}

指向具有相同架構的另一個數據庫實例是配置更改,而不是代碼更改。

暫無
暫無

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

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