使用带有2个连接字符串的EF4.1 Code First DbContext

问题描述:

是否有可能拥有一个带有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;} 
} 

是这是可行的?

如果你想有两个连接字符串到不同的数据库(包含不同的表),你必须有两个不同的上下文包含自己的映射。对于ObjectContext API和DbContext API都是如此 - 这是设计。唯一支持的方案是在同一类型的数据库服务器(数据库提供程序)上有两个连接字符串,两个完全相同的数据库。在这种情况下,您可以在实例化连接字符串时将连接字符串传递给上下文的构造函数。即使在这种情况下,也不能让一个上下文实例使用两个数据库连接。

我不这么认为。想都别想。这只是没有意义。

DbContext类仅支持每个上下文一个连接。允许单个DbContext使用多个数据库的问题之一是查询生成。在你的例子中,考虑到法院实体位于不同的数据库中,哪种查询将允许我列出所有日志的列表?

+0

对于像logs.Select(o => new {o.Court.Name,o.Date})之类的东西,它将是第一个Db中的一个查询请求日志,第二个请求法院,而且他们会被CourtId连接起来(我就是这么想的) – Omu 2011-05-05 19:08:51