实体框架代码首先,不同上下文/数据库之间的导航属性

本文关键字:数据库 之间 属性 导航 上下文 代码 框架 实体 | 更新日期: 2023-09-27 17:53:11

嗨,我有2个数据上下文映射不同的模式在SQL Server数据库,但然后我需要创建1 sdf数据库文件(SQL Compact)每个模式和使用相同的数据上下文,我有一些实体相关如下:

//context 1
class A
{
    int Id
    ...
    ICollection<B> Bs
}
//context 2
class B
{
    int Id
    ...
}

在服务器上很容易,我只需要为这个关系指定表,但在客户端,我把这些实体拆分到不同的数据库上。

所以我需要一个导航属性1实体(a)从上下文1 (database_A.sdf)与1实体(B)从上下文2 (database_B.sdf)。

实体框架代码首先,不同上下文/数据库之间的导航属性

回答我自己的问题,这是不可能做我需要什么,因为一个上下文只能链接到只有一个数据库,一种方法是有一个数据库附加在SQLite,但与SQL紧凑这是不可能的。

来源:如何连接来自不同数据库的表?SQL Compact 3.5附加多个DB/跨DB查询?

您实现的类不是Contexts,而是Entities。EF中的上下文应该继承自ObjectContext或DbContext,在你的情况下,我认为你在2个不同的数据库中有2个独立的实体。您可以这样做,以指向多个数据库

// Associate with first entity
public Context1 : ObjectContext
{
    prop IDbSet<A> ADbSet{ get; set; }
    ...
}
// Associate with Second entity
public Context2 : ObjectContext
{
    prop IDbSet<B> BDbSet{ get; set; }
    ...
}
public void ChangeDb(string dbName)
{
    Context1 context = new Context1();
    context.ChangeDatabase(dbName);
}