阻止使用Linq2Sql插入Entity对象

时间:2015-10-29 20:41:05

标签: c# linq-to-sql entity

如果我有一个实例化的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 - 来自示例)

2 个答案:

答案 0 :(得分:1)

除非您将其设置为,否则它不会跟踪该对象。

只是创建对象不会在数据库中填充它。 您需要调用db.Persons.Add(newPerson)或类似方法将其附加到集合中,然后EF才会开始跟踪您的新对象。

答案 1 :(得分:0)

通常,当您将实体附加到dbContext时,您需要指定该实体的State属性,以便EF知道是否插入,更新或删除该实体。要使EF不更新数据库,您可以将其状态显式设置为Unchanged