Sql到Linq - 反向

时间:2009-01-14 04:45:01

标签: linq linq-to-sql

我有一大堆带有简单SQL查询的xsd。我想迁移到LINQ。

是否有自动方法从SQL语句生成LINQ等价物?

4 个答案:

答案 0 :(得分:2)

没有一种简单的方法可以从SQL机械转换为LINQ;但是,您可以重新使用SQL,只需使用LINQ-to-SQL进行管道处理:

ctx.ExecuteQuery<Foo>(sql, arg1, arg2, ...);

这将从sql执行TQSL,使用arg1arg2替换参数占位符({0},{1} IIRC),并将结果网格视为Foo实例的序列(因此您不必编写解析代码)。

还有:

ctx.ExecuteCommand(sql, arg1, arg2, ...);

表示你的sql没有返回结果。

或者,从SQL创建SPROC并使用LINQ-to-SQL或Entity Framework中的SPROC。

答案 1 :(得分:2)

如果您只关心将LINQ to SQL查询的结果转换为IEnumberable或类似,那么您可以将它们包装在ExecuteQuery中:

var Space = db.ExecuteQuery<Astronaut>("SELECT TOP 10 * FROM dbo.Astronauts");

如果你想要实际拥有正确的LINQ查询,那么可能是一个选项,至少是一个可能的路径,是c#sample附带的LINQ表达式树可视化器。 http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx

答案 2 :(得分:1)

我所知道的没有图书馆,但是可以做一些工作。

我认为将{sql text(有限但有用的子集)解析为dynamic linq并不太难。这可能无法解决100%的用例,但更有可能让您满意80-90%

答案 3 :(得分:0)

有.take(10)或skip(10).take(10),可能是不正确的语法,但你就是这样做的。