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

时间:2012-08-23 12:46:04

标签: c# entity-framework linq

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

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

使我们对L2S实现做了一些改进的原因使它复杂化了一些:

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

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

所以:

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

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

1 个答案:

答案 0 :(得分:2)

  

我们是否仍然可以使用自定义的.tt类型生成系统(或类似的东西)?

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

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

如果您正在使用VS.NET 2010,那么您可以安装EF 5.x DbContext Generator for C# extension from the Visual Studio Gallery来安装模板生成器并将其添加到"添加项目" VS.NET中的菜单。

  

我们仍然可以使用我们自己定义的sprocs来进行CRUD吗?

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

Julie Lerman详细介绍了如何将CRUD操作映射到存储过程的MSDN文档标题为" Stored Procedures in the Entity Framework"。