(此问题已在SO上提出,我已阅读了大多数相关文章,并尝试根据建议实施,但仍无法正常工作)
.edmx
文件,并且C#实体是由edmx模板创建的(不确定在这里是否重要)我想在不加载整个实体的情况下更新实体的某些属性。
private async Task Monitor()
{
var timeStamp = DateTime.UtcNow.AddHours(-8);
var documents = await _dbContext.Documents
.Where(x => x.DocumentCreatedDateTime < timeStamp)
.Select(x => new
{
x.DocumentID,
x.DocumentCreatedDateTime,
x.ProcessStatusID,
ProcessStatus = x.ProcessStatus.ProcessStatusName,
x.CurrentErrors,
x.ModifiedDateTime,
x.VersionStamp
})
.ToListAsync();
if (documents.Count == 0)
{
return;
}
foreach (var document in documents)
{
var docEntity = new Document();
docEntity.DocumentID = document.DocumentID;
docEntity.CurrentErrors = "Document has error";
docEntity.ProcessStatusID = (int)StatusEnum.Error;
docEntity.ModifiedDateTime = DateTime.UtcNow;
docEntity.VersionStamp = document.VersionStamp;
_dbContext.Documents.Attach(docEntity);
var entry = _dbContext.Entry(docEntity);
entry.Property(p => p.CurrentErrors).IsModified = true;
entry.Property(p => p.ProcessStatusID).IsModified = true;
entry.Property(p => p.ModifiedDateTime).IsModified = true;
entry.Property(p => p.VersionStamp).IsModified = true;
}
await _dbContext.SaveChangesAsync().ConfigureAwait(false);
}
问题
文档实体具有数据库中所需的其他几个属性(列)。但是此特定过程不需要更新那些属性。当SaveChanges()
被调用时,我得到EntityValidationErrors
错误
更新1
我认为我可以做db.Configuration.ValidateOnSaveEnabled = false
,但不确定是不是正确的方法
必填xxxxx字段。