【问题标题】:ASP.NET MVC 3, Entity Framework, Stored Procedures and ValidationASP.NET MVC 3、实体框架、存储过程和验证
【发布时间】:2012-05-30 04:27:30
【问题描述】:

我是一名 ASP.NET Web 窗体开发人员。我的经理刚刚决定所有未来的项目都将使用 ASP.NET MVC 开发,所以我有很多东西要学得很快!

我们所有的数据操作都是通过内部 DBA 编写的存储过程处理的,我们将使用 EF。我之前在 Web 窗体项目中使用过 EF 来处理这种情况,并且没问题。我为 SP 结果生成复杂类型,并使用 Web 表单验证控件处理验证。

我一直在阅读的 ASP.NET MVC 3 教程和指南使用 EF Code First 并使用 Data Annotations 来处理验证,这一切看起来都很好,但我没有那么奢侈。我查看了一些 Database First 指南,但它们并没有专注于存储过程的独占使用,也没有太大帮助。

我主要担心的是,如果可以避免的话,我不想编写服务器和客户端验证逻辑。我也不断看到很多关于 POCO 类的讨论,但我不确定它们是否适合这种情况,或者它们是否是“代码优先”。

我即将使用 ASP.NET MVC 3 开始我的第一个项目,我有几个问题。

有没有一种方法可以使用数据注释来处理我的客户端和服务器端验证,如果没有,我最好的选择是什么?

以这种方式使用 EF 时,POCO 类是否有用/相关?

谁能给我指出一个好的教程/指南的方向和/或给我一些建议?

【问题讨论】:

    标签: asp.net-mvc-3 stored-procedures entity-framework-4 validation poco


    【解决方案1】:

    一般来说,data annotations + jquery.validate 就够了,如果没有,可以试试 DataAnotaions.Extensions,如果你更喜欢将验证逻辑和 POCO 类分开,FluentValidation 是个不错的选择。

    教程:

     http://www.asp.net/mvc
     search mvcmusicstore  at codeplex.com
     search nerddinner at codeplex.com
    

    【讨论】:

      【解决方案2】:

      您不必将 EF 与 MVC 一起使用。这只是最常见的情况。如果您打算使用 EF,那么您可能会从使用 EF(使用 ObjectContext,而不是 DbContext)和 DatabaseFirst 方法中获益更多。您的数据库优先方法只需将所有存储过程拖放到设计器中,然后使用存储过程生成对象上下文。您不需要 POCO,因为您不与实体打交道。

      您确实需要数据传输对象。 EF 将为您生成返回结果(尽管在某些情况下 EF 会感到困惑,您需要帮助它)。它将生成调用查询的方法和传递给查询的参数。

      如果您选择不使用 EF,那么您可以使用普通的旧 ADO.NET 并创建一个数据访问层,或者您可以使用 Enterprise Framework Data Access Application Blocks 之类的东西。

      关键是,即使教程都使用 EF,您也不必这样做。你可以使用任何你想要的技术。 MVC 与数据无关。

      【讨论】:

      • +1 我们也不使用 EF,严格来说是生成的包含 DAAB 代码和 DTO 的 DAL,所有 DB 工作都由 DBA 处理。我所要做的就是从我的 BLL 实体调用正确的 CRUD 方法
      • 感谢您的回答和评论。那么我可以用验证注释装饰我的 BLL 类,然后处理我的客户端和服务器端验证吗?
      • 这是共识.. 有一个插件,如果你用注释装饰你的 BLL,你可以将它们映射到 ViewModel,这些规则将被翻译并在模型中可用,称为 AutoMapper。我从来没有亲自使用过它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多