首先是MVC3和EF数据:最佳实践是什么?

chr*_*ris 9 entity-framework entity-framework-4.1 asp.net-mvc-3 database-first ef-database-first

似乎MVC3和EF4.1的大部分焦点都围绕着"代码优先" - 我似乎无法找到符合以下条件的任何示例或教程:

  • 使用现有的SQLServer数据库
  • 有单独的Web和数据访问项目(我们将有多个Web应用程序共享相同的数据访问类)
  • 验证建议

这样的示例或教程是否存在?是否有任何记录的"最佳实践"如何实现这一点,或者没有以这种方式构建解决方案的理由?

Lad*_*nka 5

这是非常常见的情况,它取决于您是否要使用EDMX文件进行映射,或者您是否希望在代码中定义映射(如代码优先).

这两种方案都可以先作为数据库完成

  • 您将使用Visual Studio中的EF工具在现有数据库中创建EDMX,您将使用DbContext T4生成器模板来获取POCO类和DbContext派生类
  • 您将下载EF Power Tools CTP,您将使用其逆向工程功能为您生成代码映射,POCO类和上下文

这些方法都不会添加数据注释.除非您正在执行非常简单的应用程序,否则不应将实体上的数据注释用于客户端验证(这是不好的做法).通常,您的视图具有更高级的期望,并且视图中的验证可能与实体不同.例如,插入视图和更新视图可能需要不同的验证,并且无法使用实体上的单组数据注释执行它.因此,您应该将数据注释移动到专用视图模型,并将实体转换为视图模型,反之亦然(您可以使用AutoMapper来简化此操作).

无论如何,可以通过好友类向生成的类添加数据注释,但如上所述,这不是一个好习惯.