2
私はオブジェクトを持っています。それは、他のオブジェクトと多対1の関係を持つThingです。どのようにしてDbContextを使って関連するPersonを複製せずにThingを追加できますか? PersonにPersonIDと呼ばれる外部キーがあります。DbContextを介してオブジェクトを追加すると、関連するオブジェクトが複製されます
context.Things.Add(newThing);
context.SaveChanges();
私もこれを実行しようとしました:
public class Thing
{
public long ID { get; set; }
public long PersonID { get; set; }
}
public class Person
{
public long ID { get; set; }
}
は、私はこれを試してみました
私が正しく質問を理解しますがしようとした場合Person person = new Person() { ID = newThing.PersonID };
context.Persons.Attach(person);
context.Things.Add(newThing);
context.SaveChanges();
'newThing'をどのように作成してそのプロパティを設定すると、質問に簡単に答えることができます。 – Slauma
どうしたらいいですか?たとえば、Thing newThing = new Thing(){PersonID = 1}です。現在起こっていることは、ID = 1のPersonと同じプロパティを持つ別のPersonをデータベースに作成することです(もちろんIDはPKなので増分されます)。 – OpticalDelusion
一般的なケースでは、あなたが言っていることは正しくないので、全体の文脈は重要です。 FKプロパティを設定してナビゲーションプロパティを 'null'のままにした場合(ナビゲーションプロパティを持っていますか?)、重複したレコードは取得されません。あなたはこのような行動を引き起こす特別な状況があります。私はちょうど理由が何であるかを知るために、より多くの文脈を求めています。 – Slauma