Jer*_*ose 6 asp.net-mvc entity-framework code-first entity-framework-4 data-annotations
我正在开发一个单人ASP.NET MVC 3项目(我完全控制数据库模式和代码),我正在尝试在数据库优先和POCO w /我的EF4模型之间做出决定,或者如果我应该是代码优先的.
我想要实现的主要功能是使用DataAnnotation属性来装饰我的模型,这样我就可以在执行任何持久性之前强制执行模式验证.看看Scott Guthrie关于模型验证w/MVC 2的文章,他谈到了关于使用代码优先(步骤2)进行操作的文章,并使用"伙伴类"进行模型优先(或数据库优先)(第5步) ).
我历史上使用SQL Server设计器GUI(和脚本)完成了我的数据库设计,因此我非常高效,严格来说,在数据库设计方面.但是,除非我放弃使用DataAnnotation属性进行装饰验证的想法,否则我将违反DRY,不仅要在两个类中具有模型属性,而且必须在两个地方构建我的模式.
我正在寻找那些对这两种方法都有经验的人(甚至是一种方法),并且可以提供他们去哪种方式的反馈,为什么他们决定这种方式,以及他们如何发现它的工作方式.我还想知道我是否会更好地完全不同,使用像Fluent验证这样的工具,或者甚至完全放弃域模型级验证,并在服务和视图模型中保持我的验证.
首先,Code First 属于 CTP,因此没有上线许可证。如果这是一个要在未来几个月内交付的项目,那么决策就是模型优先。
话虽如此,使用 DataAnnotations 的 Code First 类比使用伙伴类的 Model First POCO 更干净,但根据我的经验,最重要的是明确的意图。只要您的设计清晰并且最重要的是一致,任何一种方法都是合适的。
对于一个小项目(即您所说的一个人),我想说您可能会使用模型优先并通过 edmx 进行设计,从而提高工作效率。对于来自模式优先背景的您来说,这也会感觉更舒服。然而,您需要跳过许多环节才能使 POCO 类正常工作,例如安装 POCO T4 模板,然后修改项目中创建的 T4 模板以将 POCO 拉入单独的程序集中。您不希望它们出现在 DAL 程序集中,而这正是它们开始的地方。然后,您需要决定是否适合使用部分类来实现 DataAnnotations;出于我不同意的原因,许多人认为这些设计很糟糕。
在 MVC 项目中,当您决定使用 ViewModel 时,使用 DataAnnotations 和任何一种方法都会遇到普遍存在的 DRY 问题。此时,您会突然意识到,只有当您乐意将这些类直接发送到视图时,用于验证的模型的大量注释才有用。如果您决定保持视图轻量级并使用 ViewModel,则必须在 ViewModel 上重复 DataAnnotations,否则您会在模型级别留下验证错误,但除了手动添加之外,无法将其放入 ModelState 中。代码优先或模型优先都还没有解决这个问题,因此您需要进行相应的设计。我们亲自进行了混合并接受了一定程度的破坏DRY。
| 归档时间: |
|
| 查看次数: |
2198 次 |
| 最近记录: |