2
我有一個對象,我將它稱爲事物,它與另一個對象具有多對一的關係,我將稱它爲Person。如何在不復制關聯Person的情況下使用DbContext添加Thing。事情有Person的一個外鍵叫PersonID。通過DbContext添加對象複製相關對象
public class Thing
{
public long ID { get; set; }
public long PersonID { get; set; }
}
public class Person
{
public long ID { get; set; }
}
我嘗試這樣做:
context.Things.Add(newThing);
context.SaveChanges();
我也試着這樣做:
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}。目前發生的事情是,EF將在數據庫中創建另一個具有與ID = 1的人相同的屬性的人(當然,因爲它是PK,所以ID被增加)。 – OpticalDelusion
整體情況很重要,因爲你所說的在一般情況下是不正確的。如果你只是設置了FK屬性並且保留導航屬性'null'(你有導航屬性,對嗎?),你不會得到重複的記錄。你有一個特殊的情況導致這種行爲,我只是要求更多的上下文來得知任何想法可能是什麼原因。 – Slauma