如果我有一个实例化的Entity类,如何阻止它插入db.SubmitChanges()
?假设我需要创建该对象而不是创建具有相同属性的虚拟对象。
var newPerson = new Person //Entity Object
{
FieldId = 3,
Name = "John"
};
//....
db.SubmitChanges(); //Assume there are other items that will be upserted
如何阻止实体跟踪该对象?
修改
如下所述,这是我遇到的错误:
经过进一步测试后,我意识到插入的原因是因为我使用非泛型对象修改初始实体,导致2次插入(一个用于对象,一个新Person - 来自示例)
答案 0 :(得分:1)
除非您将其设置为,否则它不会跟踪该对象。
只是创建对象不会在数据库中填充它。
您需要调用db.Persons.Add(newPerson)
或类似方法将其附加到集合中,然后EF才会开始跟踪您的新对象。
答案 1 :(得分:0)
通常,当您将实体附加到dbContext时,您需要指定该实体的State
属性,以便EF知道是否插入,更新或删除该实体。要使EF不更新数据库,您可以将其状态显式设置为Unchanged
。