如果Entity Framework具有等效于DataRow.HasErrors的ADO.Net,那就太好了。
我遇到服务器在保存时返回错误的情况(例如“二进制/字符串数据将被截断,不可为空的字段设置为null等),并且无法分辨哪个实体导致了问题。” .Net这更容易,因为在告诉DataAdapter保存更改之后,我可以遍历所有数据行并仅检查具有HasErrors的数据行。虽然这不会查明该字段,但至少会告诉我是哪一行导致了问题。
我似乎找不到与此等效的实体。谁知道有没有?
最佳答案
在两种情况下,您都描述当您尝试保存时会抛出DbUpdateException。
此异常具有一个名为Entries的属性。您可以使用此属性来获取导致失败的实体。每个实体都是一个DbEntityEntry对象,并且具有一个属性,该属性具有真实的entity并加载有关错误原因等的更多信息。
因此,在您描述的情况下,仅捕获异常并查看Entries集合以找出问题的根本原因,如下所示:
try
{
c.SaveChanges();
}
catch (DbUpdateException ex)
{
IEnumerable<object> myBadEntities =
ex.Entries.Select(e => e.Entity);
}
关于c# - Entity Framework 等效于ADO.Net的DataRow.HasErrors?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9940666/