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

时间:2011-05-05 18:19:42

标签: entity-framework ef-code-first entity-framework-4.1

是否可以有一个带有2个连接字符串的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;}
}

这可行吗?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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