将自定义Linq-2-SQL迁移到Entity Framework

Jon*_*ton 5 c# linq entity-framework

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

我意识到.Net4仍然支持L2S,但是我希望切换到更活跃的开发领域,以便将来可以成为业务核心的系统的未来验证.(我的理解是基于诸如"我们说我们会改进它的核心(L2S)并在有意义的地方添加客户请求但是实体框架将成为主要关注点"这样的陈述.来自Damien Guard的评论到这篇文章.

使它复杂化的是我们为L2S实现做了一些改进:

  • 我们已经定制了.tt生成文件和L2ST4.
  • 我们正在为所有CRUD操作(我们自动生成)使用存储过程,因为这允许我们根据需要在特定表上打开/关闭粒度审计跟踪.

我所知道的其余大部分内容都是可以的,因为我自己在EF4中完成了它(事实上很多都是在EF4数据库上开始的),但是我想知道上面的自定义是否会成为问题.

所以:

  • 我们还可以拥有定制的.tt类型生成系统(或类似的东西)吗?
  • 我们还可以使用自己定义的sprocs来进行CRUD吗?

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

cas*_*One 2

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

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

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

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

我们还可以使用自己定义的存储过程进行 CRUD 吗?

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

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