[英]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.