2011-05-05 66 views
0

是否有可能擁有一個帶有2個連接字符串的DbContext?使用帶有2個連接字符串的EF4.1 Code First DbContext

這是我有:

// this is from Db1 
public class Log 
{ 
    public virtual Court Court {get;set;} 
    public Guid CourtId {get;set;} 
    public DateTime Date{get;set;} 
} 

// this is from Db2 (different connection string) 
public class Court 
{ 
    public Guid Id {get;set;} 
    public string Name {get;set;} 
} 

是這是可行的?

回答

4

如果你想有兩個連接字符串到不同的數據庫(包含不同的表),你必須有兩個不同的上下文包含自己的映射。對於ObjectContext API和DbContext API都是如此 - 這是設計。唯一支持的方案是在同一類型的數據庫服務器(數據庫提供程序)上有兩個連接字符串,兩個完全相同的數據庫。在這種情況下,您可以在實例化連接字符串時將連接字符串傳遞給上下文的構造函數。即使在這種情況下,也不能讓一個上下文實例使用兩個數據庫連接。

1

我不這麼認爲。想都別想。這只是沒有意義。

1

DbContext類僅支持每個上下文一個連接。允許單個DbContext使用多個數據庫的問題之一是查詢生成。在你的例子中,考慮到法院實體位於不同的數據庫中,哪種查詢將允許我列出所有日誌的列表?

+0

對於像logs.Select(o => new {o.Court.Name,o.Date})之類的東西,它將是第一個Db中的一個查詢請求日誌,第二個請求法院,而且他們會被CourtId連接起來(我就是這麼想的) – Omu 2011-05-05 19:08:51

相關問題