【问题标题】:How validate on save supposed to work如何验证保存应该工作
【发布时间】:2012-04-03 17:08:16
【问题描述】:

我们正在使用 EF 4.0 和代码优先方法。我已经使用属性 StringLength 定义了属性长度的约束。我的印象是 SaveChanges for Context 跟踪具有比指定约束长的数据的实体将引发验证异常。 但不幸的是,这并没有发生。如果我在 SaveChanges 之前执行 GetValidationErrors(),我会看到预期的错误。有人可以阐明这些东西应该如何工作吗?

更新:找到问题所在。为了追踪受 SaveChanges 影响的实体,我们使用 DBContext 的底层 ObjectContext(通过 IObjectContextAdapter)。当我切换到 DBContext 时,已为 ObjectContext 调用 SaveChanges。SaveChanges 问题已解决。

【问题讨论】:

  • 您是否在某处设置了dbContext.Configuration.ValidateOnSaveEnabled = false?顺便说一句:EF 4.0 没有代码优先。你能检查一下你正在使用的版本,它必须在 4.1 和 4.3 之间(或 EF 5.0 beta)吗?
  • 是的,我绝对确定 ValidateOnSaveEnabled 是真的。我们使用 System.Data.Entity.dll 和运行时版本 v4.0.30319(版本 4.0.0.0),它包括代码优先和 GetValidationErrors 和 ValidateOnSaveEnabled。
  • 您的项目中还应该引用一个“EntityFramework.dll”。 “System.Data.Entity.dll”不包括代码优先。 Code-First 是单独程序集“EntityFramework.dll”中的扩展(尽管它还包含 namespace“System.Data.Entity”的扩展)。重要的是要知道“EntityFramework.dll”的版本。
  • 啊,我刚刚看到,您已经解决了问题,恭喜!您可以将其作为答案发布并接受您自己的答案。它可能对其他人有帮助。

标签: entity-framework entity-framework-4


【解决方案1】:

找到问题所在。为了追踪受 SaveChanges 影响的实体,我们使用 DBContext 的底层 ObjectContext(通过 IObjectContextAdapter)。当我切换到 DBContext 时,已为 ObjectContext 调用 SaveChanges。SaveChanges 问题已解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多