我在EntityFramework 5

时间:2015-12-24 17:18:09

标签: c# entity-framework asp.net-mvc-5

我在尝试使用以下代码将对象保存到数据库时获得DbEntityValidationException

public void Save(Employee emp)
{
    repository.Insert(emp);
    unitOfWork.SaveChanges();               
}

然后我尝试使用以下内容抛出异常的细节:

try
{
    repository.Insert(emp);
    unitOfWork.SaveChanges();
}
catch (DbEntityValidationException ex)
{             
    var errorMessages = ex.EntityValidationErrors
        .SelectMany(x => x.ValidationErrors)
        .Select(x => x.ErrorMessage);
    var fullErrorMessage = string.Join("; ", errorMessages);
    var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);

   // Throw a new DbEntityValidationException with the improved exception message.
   throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}

现在我收到以下错误,我似乎无法在任何地方看到System.Data.Entity.Validation添加到我的引用中以清除此错误消息:

  

类型或命名空间名称' DbEntityValidationException'找不到(你错过了使用指令或汇编引用吗?)

我该如何解决这个问题?

更新 我刚刚注意到我的EF的运行时版本是4.030319。这可能是原因吗? enter image description here

2 个答案:

答案 0 :(得分:1)

在实体框架5中,class A(object): class B(object): pass class C(object): pass def enumerate_nested_classes(_class): return () # need proper implementation instead assert set(enumerate_nested_classes(A)) == {A.B, A.C} 类在DbEntityValidationException命名空间(在EntityFramework dll中)中定义。您需要为此命名空间包含System.Data.Entity.Validation语句,以便您的类中可以使用属于此命名空间的类。

将此行添加到您的类中,然后您应该能够使用此异常类。

using

答案 1 :(得分:0)

正如Gert Arnold所建议的那样,我将用于分析验证错误的代码放在我的unitOfWork.SaveChanges方法中,我不再有

  

DbEntityValidationException'无法找到

错误。谢谢大家!