【问题标题】:How to implement validation with the Massive ORM?如何使用 Massive ORM 实现验证?
【发布时间】:2011-07-09 00:49:57
【问题描述】:

我喜欢 Rails,所以我被 Rob Conery's Massive ORM 所吸引,因为它......嗯,非常糟糕。

我的问题是,您究竟应该如何使用 Massive 进行验证?在 Rails 中,您可以使用简单的“validates”关键字进行内联验证和/或引用要调用的方法...以及定义何时进行此类验证的能力(例如,仅用于创建、保存后等。 .).

Massive 是否提供此类受 Rails 启发的验证?如果是这样,推荐的方法是什么?

非常感谢-wg

【问题讨论】:

    标签: c# asp.net asp.net-mvc orm massive


    【解决方案1】:

    我今天也在想同样的事情,我仍然没有真正满意的答案,但我确实找到了最近被推送到 Github 并使用 Massive 进行数据访问的 Tekpub MVC 3 系列的示例代码 -

    https://github.com/tekpub/mvc3

    这个class 包含一些针对视图模型的 DataAnnotation 验证,据我所知,没有一个“域”类包含任何验证。

    【讨论】:

    • 是的。视图模型验证很棒,但如果您不能在域中进行验证,那么您将失败。我确信它是可能的......问题是它如何以及是否既直观又灵活(如 Rails 'validations')。
    【解决方案2】:

    根据 GitHub 上的自述文件,最近向 Massive 添加了验证。

    【讨论】:

      【解决方案3】:

      对于 Asp.net MVC,最推荐的方法是使用 DataAnnotations 或 FluentValidations 进行验证。如果您只是用谷歌搜索这些术语,就会有大量的知识。

      我们 Seesharpies 不喜欢针对数据库模型进行验证,因此我们可以清晰地分离关注点。验证数据库模型并没有“错误”,但由于静态和编译语言的僵化,其他替代方法就没有多大意义了。

      【讨论】:

      • 我的问题是您将如何使用 Massive 实现此类验证?我熟悉并使用 DataAnnotations 和其他基于属性的验证机制......但我不确定你会如何使用 Massive 来做到这一点。谢谢
      【解决方案4】:

      我不会使用 Massive 进行验证。对于我的域模型,我有使用 DataAnnotations 的“命令”DTO。我的域对象对它们进行验证,然后我使用“域事件”模式将更改发布到我的聚合中。

      这是我将使用大规模的地方 - 收听我的域的订阅者将处理引发的事件 DTO,并使用它们通过大规模更新数据库。然后我的视图模型将使用海量查询数据库。

      我一直在使用 EF 4.1,但我厌倦了映射命令 -> 事件 -> 视图模型/dto。我将使用大规模,因此我不必再定义视图模型/dto。

      【讨论】:

        【解决方案5】:

        进行验证与使用 EF 进行验证没有什么不同。这是对上述答案的评论。

        如果您熟悉 DataAnnotations,那么您就知道如何进行验证。假设您有视图模型,然后将注释添加到它们。在您的控制器中,您正在使用进行验证的视图模型。验证后,您会将这些传递给您的数据层,这可能是巨大的或 ef 或其他。

        要清楚,您不是在验证实体,而是在验证视图模型。希望这是有道理的!我自己也几乎看不懂哈哈哈哈。

        【讨论】:

        • 验证应该是您的 DOMAIN 模型的一部分,而不是您的 VIEW 模型,以保持 DRY 并确保无论客户端(浏览器、Web 服务、移动应用程序等)如何都能进行验证。同样,我正在寻找一个在使用大规模 ORM 的域模型中进行验证的具体示例。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多