9

似乎 MVC3 和 EF4.1 的大部分关注点都围绕着“代码优先”——我似乎找不到任何符合以下标准的示例或教程:

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

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

4

1 回答 1

5

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

这两种情况都可以先作为数据库来完成

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

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

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

于 2011-07-05T16:07:11.977 回答