1

次のエンティティがあります (Entity Framework 5 を使用する pocos):

  • 会社: ID、名前、アプリケーションなど
  • アプリケーション: ID、名前など

企業とアプリケーションの間には多対多の関係があります。

会社 (データベースからロードされたアプリケーション関係なし) とアプリケーション ID のコレクションを持っているので、会社からアプリケーションをクリアし、コレクションで指定された ID を持つアプリケーションを追加したいと思います。

次のように、データベースからアプリケーションをロードせずに、ID を使用してアプリケーションをアタッチできます。

foreach (int id in selectedApplications)
{
    Application application = new Application() { Id = id };
    _context.Applications.Attach(application);
    company.Applications.Add(application);
}
_context.SaveChanges();

ただし、最初にアプリケーションの関係をクリアする必要があります。最初にデータベースからロードせずに多対多の関係をクリアする方法はありますか?

4

1 に答える 1

1

これが唯一の方法です。company.Applicationsアイテムを追加または削除するときにロードする必要があります。そうしないと、変更トラッカーは変更を認識しません。

また、ジャンクション テーブルは概念モデルのエンティティではないため、外部キー アソシエーションで可能なプリミティブな外部キー プロパティを設定する方法はありません。オブジェクト コレクションによって関連付けにアクセスする必要があります。

于 2013-05-24T14:57:15.223 に答える