是否有工具将T-SQL存储过程转换为C#?

Jes*_*per 10 c# t-sql sql-server stored-procedures

2017年更新:

实际上,答案是否定的,即使你有使用它也应该非常谨慎.

实际上只有两种方法可以解决这个问题:

a)咬住子弹并手动和精心地转换所有内容,并使用一些验证方法来检查所有内容是否仍按预期运行,如单元/回归测试.使用Linqer等工具(如果有)作为帮助来解决部分问题.

b)从头开始.

没有选择c)让其他东西整齐自动地处理所有事情,并且它不可能涵盖所有情况.有很多事情,T-SQL可以做LINQ无法做到的事情(想到更新,插入和删除),还有很多事情你最好用C#做不同的方式(比如游标).

很少有像这样的问题得到精心设计,详尽无遗的解决方案,可信赖不退回功能(如商业VB6到VB.NET转换器,可以证明花费巨大的努力,因为有大量的潜在客户,你可以在哪里如果出现问题,请拿起电话或律师),所以如果存在这样的工具,你应该非常小心.从LINQ兼容的SQL子集到LINQ的转换是一个有限的问题,并且我认为Linqer可以信任.

这个问题试图找出一个可以帮助选项的工具a)但我想很多读这个的人都在寻找选项c).这个问题和答案的一个子集并不是一个可怕的想法,但它不会自动消除剩余的负担,因为即使许多简单的存储过程也不仅仅是以LINQ可表达的形式进行查询.对于我提到的任何项目,做选项a)仍然太过难以忍受.


原始问题如下:

我有一些项目要维护,使用很多SQL Server存储过程(在T-SQL中).我知道如何维护它们,但由于有许多工具可以自动在不同语言之间进行转换,我想知道是否有任何工具可以将存储过程转换为C#代码?

我不想将它们转换为CLR存储过程; 我只想将数据层中的逻辑迁移到项目的C#端,并自动执行繁琐的工作.大多数存储过程(可能是70%?)都是简单的"SELECT*FROM table WHERE id = @id"事务,它们也可以与Entity Framework一样完成.

我知道它不是T-SQL和C#之间的直线,因为它是从VB.NET到C#并且转换不是那么简单; 例如,你需要在C#中引入一个数据层,而像游标这样的东西没有相应的概念.我只是希望在没有重复的手工劳动的情况下离开存储过程.

因为这已经被错误的假设所质疑:我已经知道了T-SQL,并且给出了这些存储过程中的任何一个的代码,我可以告诉你他们做了什么.我不希望逻辑继续驻留在存储过程中有很好的实际原因.

Chr*_*tow 4

查看Linqer

Linqer 是一个 SQL 到 LINQ 转换工具。它可以帮助您学习 LINQ 并转换现有的 SQL 语句。

并非每个 SQL 语句都可以转换为 LINQ,但 Linqer 涵盖了许多不同类型的 SQL 表达式。

由于LINQ是C#的一部分,因此它对数据类型转换很敏感。Linqer 在生成的 LINQ 语句中执行所需的类型转换。