2

您好我有 2 个数据上下文,它们在 SQL Server 数据库上映射不同的模式,但是我需要为每个模式创建 1 个 sdf 数据库文件(SQL Compact)并使用相同的数据上下文,并且我有一些相关的实体,如下所示:

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

//context 2
class B
{
    int Id
    ...
}

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

因此,我需要上下文 1 (database_A.sdf) 中的 1 个实体 (A) 上的导航属性与上下文 2 (database_B.sdf) 中的 1 个实体 (B) 相关联。

提前致谢。

4

2 回答 2

3

回答我自己的问题,不可能做我需要的事情,因为一个上下文只能链接到一个数据库,一种方法是像在 SQLite 中一样附加一个数据库,但使用 SQL Compact 这是不可能的。

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

于 2013-01-16T10:24:35.667 回答
1

你实现的那些类不是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);
}

希望这有帮助。

于 2013-01-15T15:32:33.180 回答