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,并且给出了这些存储过程中的任何一个的代码,我可以告诉你他们做了什么.我不希望逻辑继续驻留在存储过程中有很好的实际原因.
| 归档时间: |
|
| 查看次数: |
8022 次 |
| 最近记录: |