使用 Linq2Sql 防止插入实体对象

Prevent Entity object from being inserted using Linq2Sql

如果我有一个实例化的实体 class,我怎样才能防止它被插入到 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 - 来自示例)

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

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

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