我正在尝试使用EntityFramework 6
在数据库中编写/更改数据时提高性能。
当获取要更新的实体时,我使用以下代码,因为我知道来自其他实体外键关键的主键:
// create a dummy entity
var dummy = new TheEntity
{
TheEntityId = myKey
};
// check if not already attached
var attachedEntity = dbContext.TheEntity.Exists(nrp => nrp.TheEntityId == myKey); // this checks if not already attached
if (attachedEntity == null)
{
// attach to the context
dbContext.TheEntity.Attach(dummy);
}
// return the dummy
return dummy;
稍后我会更改实体的某些值(但只有一些),根据调用者的不同,这些值可能会有所不同。
然而,当SaveChanges
被调用时,对于我没有触及的属性,我总是得到System.Data.Entity.Validation.DbEntityValidationException
。
我想要的是一个update-statement,它只更新标记为IsModified == true
的值。
我还使用dbContext.Entry(dummy).Property(...).IsModified
检查了条目的属性,只有我更改的属性为真,但其他属性为false
,因此它们不应该更新,不是吗?
有什么问题?正如here所述,它应该按预期工作。
我尝试了答案以及评论'如果你不想设置db.Configuration.ValidateOnSaveEnabled = false
......',但仍然是同一个问题。我真的不想禁用验证。