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

时间:2013-01-15 15:17:50

标签: c# .net sql frameworks entity

您好我有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)相关联。

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

来源: SQLite - How do you join tables from different databases? SQL Compact 3.5 attach multiple DB/ cross-db query?

答案 1 :(得分:1)

您实施的这些课程不是Contexts,而是Entities。 EF中的Context应继承自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);
}

希望得到这个帮助。