2011-11-09 8 views
1

私はこれを見たことがわかっていますが、どこでも見つけることはできません。データベースを再クエリーせずに関係を追加する

多対多の関係を持つ2つのオブジェクトがあります。PersonとDepartmentです。人は多くの部署を持つことができ、その逆もあります。

私はそれが思った:

var person = //query user 

var d = new Department(); 
d.Id = 123; 

person.Departments.add(d); 

これは、データベース内に新しい部門を作成し、それらを結ぶが、それは私が欲しいものイマイチ。部門はすでに存在しています。私はただの関係を作りたい。部門のインスタンスを取得するためにデータベースを再クエリーせずに、これを行うにはどうすればよいですか?

+0

私はあなたがそれを –

答えて

1

ことは、これを試してみてください。しかし、それが動作しない場合、あなたはなく直接マッピングエンティティの更新を試すことができます。

var departmentMember = new DepartmentMember 
          { 
           DepartmentId = 123, 
           MemberId = person.Id 
          }; 

dbContext.DepartmentMembers.Add(departmentMember); 
dbContext.SaveChanges(); 
0

方法について:繰延照会が使用されているようdbContext.SaveChanges()が呼び出されるまで、これはデータベースを照会べきではありません

var department = dbContext.Departments.FirstOrDefault(d => d.Id == 123); 
person.Departments.Add(department); 
dbContext.SaveChanges(); 

person.Departments.Add(context.Departments.First(c=>c.Id==123)); 
+0

文句を言わない 'context.Departments.First(C => Cをインスタンス化するのではなく、dを選択したいと思います。 Id == 123) 'データベースに問い合わせる? – Jeff

+0

ああ申し訳ありませんがあなたの質問を今すぐ参照してください –

+0

多分あなたは、元のテーブルを生のSQLインサートで更新する必要がありますか?私は別の方法を知らない - しかし多分誰か他の人wil –

関連する問題