验证失败的一个或多个实体
问题描述:
我在asp.net MVC3应用程序下面的代码:验证失败的一个或多个实体
string msg = "Beginning report run for: ";
msg += " Obligor Registry ID: " + obligorID;
msg += " Requesting Organization Registry ID:" + requestingOrgID;
msg += " Requesting Agent Registry ID: " + requestingAgentID;
TransactionLog lg = new TransactionLog();
lg.TransactionTypeId = 2;
lg.Message = msg;
context.TransactionLogs.Add(lg);
long referenceNumber = context.SaveChanges();
return referenceNumber;
和我收到以下错误:虽然你是内
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
答
在调试模式所述catch {...}
块开辟 “快速监视” 窗口(CTRL + ALT + q),并在那里粘贴:
((System.Data.Entity.Validation.DbEntityValidationException)ex).EntityValidationErrors
这将让你深入到ValidationErrors
树。这是我发现能够即时洞察这些错误的最简单方法。
答
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
}
您需要的命名空间:System.Data.Entity.Validation
答
@GONeale帮了我在这方面。此外,在我的情况下,这种例外是因为我有某些非空db字段,我没有包含在某些事务的部分响应更新中。在这种情况下,context.Database.ExecuteSQLCommand将是我的建议。
不错,你在例外的细节中找到了什么? – 2011-05-28 11:05:53
我已经粘贴了上面的详细信息:验证一个或多个实体失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。 – DotnetSparrow 2011-05-28 11:08:59
异常消息说您应该检查其“EntityValidationErrors”属性以获取更多信息... – 2011-05-28 11:49:54