我有一大堆带有简单SQL查询的xsd。我想迁移到LINQ。
是否有自动方法从SQL语句生成LINQ等价物?
答案 0 :(得分:2)
没有一种简单的方法可以从SQL机械转换为LINQ;但是,您可以重新使用SQL,只需使用LINQ-to-SQL进行管道处理:
ctx.ExecuteQuery<Foo>(sql, arg1, arg2, ...);
这将从sql
执行TQSL,使用arg1
和arg2
替换参数占位符({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),可能是不正确的语法,但你就是这样做的。