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

时间:2011-07-05 15:31:53

标签: entity-framework asp.net-mvc-3 entity-framework-4.1 database-first ef-database-first

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

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

是否存在这样的示例或教程?是否有任何关于如何实现这一目标的“最佳实践”,或者没有以这种方式构建解决方案的理由?

1 个答案:

答案 0 :(得分:5)

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

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

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

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

无论如何,通过好友课程它是possible to add data annotations to generated classes,但如上所述,这不是一个好习惯。