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