在某些情况下,entity.IsValid为false但在SaveChanges()上不会引发异常。 modelChangeSet仅返回Valid实体(默认情况下),并且不会为无效的实体抛出任何异常。因此,无效实体保留在具有修改或添加状态的datacontext中,并且不会捕获任何异常。例如,如果我使用重复的主键创建新实体(DataContext.EntitySet.CreateNew()),则该实体无效,但调用SaveChanges()不会引发异常。您是否可以在调用SaveChanges()?
时推荐一种获取验证错误消息的方法作为一种解决方法,我在调用SaveChanges()(客户端验证)之前检查InValid实体,如果所有实体都有效,则仅调用SaveChanges()。
foreach (Entity entity in context.EntitySet.Where(x => x.ChangeTracker.State.Equals(ObjectState.Added) || x.ChangeTracker.State.Equals(ObjectState.Modified)))
{
if (!entity.IsValid)
{
MessageBox.Show(((System.ComponentModel.IDataErrorInfo)(NTier.Common.Domain.Model.Entity)entity).Error);
invalidEntityFound = true;
}
}
If (!invalidEntityFound)
Context.SaveChanges()
设置GetChangeSet()方法参数includeOnlyValid = false会更改SaveChanges()的处理流程吗?有没有办法设置该参数值?
@ChristofSenn您有什么建议吗?