2016-10-20 161 views
3

我们有一些使用Linq to SQL作为ORM的遗留代码。我们希望将此逻辑迁移到.Net Core,以便我们可以将它放在Linux服务器上。据我所知,L2S不包含在.Net Core中。将Linq迁移到SQL代码为.Net Core

什么是最小阻力的迁移路径?

回答

0

如果您将旧版代码重写为.NET Core,则需要付出一些努力。

对于L2S,您可能需要使用Entity Framework Core将其重写为现代查询。它可能会让您的生活更容易从数据库中生成实体,请参阅Reverse engineer your model

这将是推荐的方式,但我不确定它是否是您的情况中最简单的方法。

0

如果您使用L2S,因为EF在使用Skip and Take时效率不高,因此您可以用Dapper来获取较大的结果。给自己一份LINQPad的副本,并使用它来获取为每个LINQ表达式生成的SQL。

L2S在实际查询周围包装了一些奇怪的SQL,以使用SQL的rownumber函数来实现跳过和执行。如果您使用的是最新版本的SQL Server,那么您不需要这样做,因为TSQL现在具有等同于跳过和跳过的子句。如果您直接编写SQL并生成易于理解的SQL,但在后续的用户中不会引发WTF,但LINQ方法适用于所有版本的SQL Server,则此方法很方便。

然后将此SQL与Dapper一起使用,它将为您执行ORM部分。它也有类似于L2S的类型映射参数的适当支持,所以你可以避免构建SQL字符串和注入漏洞。

如果您希望构建具有集合成员身份所隐含的FK值的对象图的所有智能,那么您运气不好,必须手工编写它。