多対多の関係を持つ3つのテーブルがあります
質問 - (QuestionId, Question)
タグ - (TagId、TagName)
QuestionTag - (QuestionId、TagId)
ユーザーが質問をして、それに関連するタグを追加できるというシナリオがあります。
後で、既存のクエストに新しいタグ (既にデータベースにある) を追加する必要がある場合は、どうすればよいですか? questionId と TagId のみを「QuestionTag」テーブルに追加する必要があります。これらは既にテーブルに追加されているため、新しい質問やタグを追加する必要はありません。どうやってするの?
リンクInsert/Update Many to Many Entity Framework で同様の質問を見つけました。どうすればいいのですか? 新しい質問が追加され、データベースに既に存在するタグがマップされる同様のシナリオがあります。
using (var context = new MyContext())
{
var question= new Question { Question = "I have a question" };
Tag tag1 = context.Tags.FirstOrDefault(s => s.Name == "C#");
Tag tag2 = context.Tags.FirstOrDefault(s => s.Name == ".net");
question.Tags.Add(tag1);
question.Tags.Add(tag2);
context.AddToQuestiones(question);
context.SaveChanges();
}
したがって、私のシナリオで作業するために、上記のコードを次のように変更しました
var question= context.Question.FirstOrDefault(q => q.QuestionId == 1);
しかし、私は次の例外を得ました。
「2 つのオブジェクトの関係は、異なる ObjectContext オブジェクトに関連付けられているため、定義できません。」
また、不一致のタグ名で誤って追加された場合、質問の「QuestionTag」から質問タグを削除する方法。
これを解決するために私を助けてください。