2

こんにちは、SQL Server データベースに異なるスキーマをマップする 2 つのデータ コンテキストがありますが、スキーマごとに 1 つの sdf データベース ファイル (SQL Compact) を作成し、同じデータ コンテキストを使用する必要があり、次のように関連するエンティティがいくつかあります。

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

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

サーバーでは、このリレーションのテーブルを指定するだけで簡単ですが、クライアントでは、このエンティティを異なるデータベースに分割しています。

したがって、コンテキスト 2 (database_B.sdf) の 1 つのエンティティ (B) と関連付けるには、コンテキスト 1 (database_A.sdf) の 1 つのエンティティ (A) にナビゲーション プロパティが必要です。

前もって感謝します。

4

2 に答える 2

3

私自身の質問に答えると、1 つのコンテキストは 1 つのデータベースにしかリンクできないため、必要なことを行うことはできません。それを行う 1 つの方法は、SQLite のようにデータベースを接続することですが、SQL Compact では不可能です。

ソース: SQLite - 異なるデータベースのテーブルを結合するにはどうすればよいですか? SQL Compact 3.5 は複数の DB/クロス DB クエリを接続しますか?

于 2013-01-16T10:24:35.667 に答える
1

実装されているクラスは、そうではありませContextsEntities。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 に答える