【问题标题】:I cannot find System.Data.Entity.Validation in EntityFramework 5我在 EntityFramework 5 中找不到 System.Data.Entity.Validation
【发布时间】:2015-12-24 17:18:09
【问题描述】:

我在尝试使用以下代码将对象保存到数据库时收到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”(您是否缺少 using 指令或程序集引用?)

我该如何解决这个问题?

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

【问题讨论】:

  • 感谢您的快速回答,但我收到了 DbEntityValidationException 本身的错误。我的问题是,如何解决我帖子中的最后一条错误消息?
  • 在您的 Save 方法运行的程序集中是否引用了 EF?顺便说一句,我认为存储库/UoW 的目的是抽象出数据访问细节,因此分析验证错误的代码应该在 UoW 内部,并且 UoW 应该抛出自定义异常。
  • 非常感谢@GertArnold 捕捉到这个。我将代码放在 unitOfWork 中,这样就消除了错误消息。我的问题解决了。谢谢!

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


【解决方案1】:

在实体框架 5 中,DbEntityValidationException 类定义在 System.Data.Entity.Validation 命名空间(位于 EntityFramework dll 中)。您需要为此命名空间包含 using 语句,以便属于此命名空间的类在您的类中可用。

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

using System.Data.Entity.Validation;

【讨论】:

  • 我尝试添加 using 语句,但找不到 System.Data.Entity.Validation。我只能得到 System.Data.Entity
  • 您确定您使用的是 EF 5 吗?我刚刚验证,它在 EntityFramework.dll
【解决方案2】:

按照 Gert Arnold 的建议,我将分析验证错误的代码放在了我的 unitOfWork.SaveChanges 方法中,而我不再拥有

找不到 DbEntityValidationException'

错误。谢谢大家!

【讨论】:

    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 2013-01-29
    • 2012-06-12
    • 2012-03-01
    相关资源
    最近更新 更多