5

我在 .net 3.5 中有一个基于 Linq-2-SQL 的数据层。我们正在考虑迁移到 .Net 4。很快。当我们开始最初的开发时,我对将 EF 用于数据层很感兴趣,但发现它在 .Net 3.5 中并不是一个真正的选项。现在我们正在升级,我正在重新考虑。

我意识到 .Net4 仍然支持 L2S,但是我很想切换到更活跃的开发领域,以便将来验证一个可能在相当长一段时间内成为业务核心的系统。(我的理解是基于诸如“我们说我们将改进它的核心 (L2S) 并在有意义的地方添加客户请求但实体框架将是主要关注点。”来自 Damien Guard 在这篇文章的评论中的陈述.

更复杂的是,我们对 L2S 实现做了一些修改:

  • 我们对 .tt 生成文件进行了相当程度的定制,并稍微定制了 L2ST4。
  • 我们将存储过程用于所有 CRUD 操作(我们自动生成),因为这允许我们根据需要打开/关闭特定表上的细粒度审计跟踪。

我知道我们使用的其他大部分内容都可以,因为我自己在 EF4 中完成了它(实际上很多都是在 EF4 数据库上开始的),但我想知道上述自定义是否会问题。

所以:

  • 我们还能有一个定制的 .tt 类型生成系统(或类似的东西)吗?
  • 我们仍然可以将我们自己定义的存储过程用于 CRUD 吗?

注意:如果我们使用 EF,我可能会使用 Database First 版本。

4

1 回答 1

2

我们还能有一个定制的 .tt 类型生成系统(或类似的东西)吗?

是的。在 VS 2012 中,您可以使用DbContext生成器,该生成器使用 T4 模板来生成您的DbContext持久性无知的类。

添加它并将其指向您的 edmx 文件后,您可以修改模板以自定义输出。

如果您使用的是 VS.NET 2010,则可以从 Visual Studio Gallery 安装 EF 5.x DbContext Generator for C# extension以安装模板生成器并将其添加到 VS.NET 的“添加项目”菜单中。

我们仍然可以将我们自己定义的存储过程用于 CRUD 吗?

是的,这只是将概念模型(您在 edmx 文件中使用的内容)映射到物理模型(数据库的表示)的问题。在映射中,您将指定存储过程,而不是动态完成它。

Julie Lerman 在 MSDN 文档中标题为“实体框架中的存储过程”的部分详细介绍了如何将 CRUD 操作映射到存储过程。

于 2012-08-31T14:29:51.300 回答