过去,我们的开发团队决定创建一个新的企业应用程序,并决定使用“Linq to SQL”,因为实体框架“糟透了”。 (不是我的意见!)他们使用Visual Studio 2008,EF不是默认设置的一部分,但需要额外的插件。因此决定使用Linq to SQL来访问数据库。因此,我们现在围绕一个包含DBML和L2SQL实体的数据模块类库有多个项目......
现在很明显,这些开发人员错了。一些人转移到其他公司,一些新的公司被包括在这个项目中。 (包括我。)我们想要使用实体框架。最好是带有.NET 4.0的版本4 ......这将使我们对数据更加灵活,我们希望在几个实体中包含一些继承,使代码更易于阅读和更好用。
那么,如何从“Linq to SQL”迁移到Entity Framework 4而无需重写我们的大部分代码?
答案 0 :(得分:5)
手动。没有其他办法,如果你没有使用数据模块的所有项目的集成测试套件,你不应该开始任何迁移,直到你编写这些测试,因为在Linq-to-Sql中工作的许多linq查询不起作用在Linq-to-entities(and not only Linq queries)中。
一般来说,迁移是错误的想法。看起来您想要进行迁移只是因为您想要使用其他技术。这项工作将增加什么真正的商业价值? EF和Linq-to-entities提供了一些附加功能,但它在很多方面比Linq-to-sql更糟糕。除非您有一些真正的业务需求,否则无需触摸有效的代码。特别是迁移到EFv1将是非常愚蠢的举动。您可以将.NET 4与当前代码一起使用而不会出现任何问题,因为Linq-to-Sql也是.NET 4的一部分。
如果你问我,那些前开发人员在EFv1和Linq-to-Sql之间进行选择时做出了不错的选择。