C# 有没有工具可以将T-SQL存储过程转换为C?

C# 有没有工具可以将T-SQL存储过程转换为C?,c#,sql-server,tsql,stored-procedures,C#,Sql Server,Tsql,Stored Procedures,2017年更新: 事实上,答案是否定的,即使有,你也应该非常谨慎地使用它 实际上,只有两种方法可以解决此问题: 咬紧牙关,手动、费力地转换所有内容,并使用某种验证方法检查所有内容是否继续按预期运行,如单元/回归测试。使用Linqer之类的工具(如果可用)作为帮助,解决部分问题 b从头开始 没有选择c让其他的东西整齐地、自动地处理所有的事情,它也不可能涵盖所有的情况。T-SQL可以做很多LINQ无法更新、插入和删除spring的事情,还有很多事情你最好在C类游标中使用不同的方式 很少有像这样的问题

2017年更新:

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

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

咬紧牙关,手动、费力地转换所有内容,并使用某种验证方法检查所有内容是否继续按预期运行,如单元/回归测试。使用Linqer之类的工具(如果可用)作为帮助,解决部分问题

b从头开始

没有选择c让其他的东西整齐地、自动地处理所有的事情,它也不可能涵盖所有的情况。T-SQL可以做很多LINQ无法更新、插入和删除spring的事情,还有很多事情你最好在C类游标中使用不同的方式

很少有像这样的问题得到精心设计、详尽的解决方案,可以相信这些解决方案不会使商业VB6到VB.NET转换器这样的功能倒退,因为潜在客户数量巨大,如果出现问题,您可以拿起电话或律师,因此,如果有这样的工具存在,你应该非常小心。从与LINQ兼容的SQL子集到LINQ的转换是一个有界的问题,我认为Linqer是可以信任的

这个问题试图找出一个可以帮助选择a的工具,但我想很多读这篇文章的人都在寻找选择c。这个问题和答案的一个子集并不是一个可怕的想法,但它并没有自动消除剩余的负担,因为即使是许多简单的存储过程也不仅仅是以LINQ可表达的形式进行查询。对于我提到的任何一个项目来说,选择a都是站不住脚的

原问题如下:

我有几个项目需要维护,它们在T-SQL中使用了大量SQL Server存储过程。我知道如何维护它们,但是因为有很多工具可以在不同的语言之间自动转换,我想知道是否有任何工具可以将存储过程转换为C代码

我不想将它们转换为CLR存储过程;我只是想将数据层中的逻辑迁移到项目的C端,并自动化繁重的工作。大多数存储过程可能是70%?它们是简单的SELECT*,从id=@id事务的表中选择,使用实体框架也可以这样做

我知道T-SQL和C之间并不像从VB.NET到C那样是一条直线,转换也不是那么简单;例如,您需要在C语言中引入一个数据层,而有些东西,如游标,则没有相应的概念。如果可能的话,我只想摆脱存储过程而不需要重复的手工劳动

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

查看:

Linqer是一个SQL到LINQ的转换器 工具它帮助你学习LINQ和 转换现有的SQL语句

并非每个SQL语句都可以 转换为LINQ,但Linqer覆盖 许多不同类型的SQL 表情

因为LINQ是C的一部分,所以它是 对数据类型转换敏感。 Linqer执行所需类型的铸件 在生成的LINQ语句中


不要这样做。。。不,这是个坏主意——T-SQL存储过程功能强大,使用它是有原因的——将它们迁移到C并不会给您带来任何好处,但也有很多缺点。不要这样做。习惯T-SQL。我重新措辞了我的问题。存储过程大多不是做t-SQL最好的事情的存储过程,而是为了成为存储过程而做的存储过程,因为做一个简单的、赤裸裸的选择对灵魂是有害的。请重新考虑。如果您重新开始,这可能是一个不同的讨论,我相信这里有很多关于存储过程使用的线程。但是由于它们已经以这种方式实现了,请不要将它们更改为C。我认为这是一个有效的问题。当前,存储过程中可能存在业务逻辑,最好将其移动到应用层;或者它可以作为一个学习练习。整洁的小程序。不幸的是,您必须将每个查询粘贴到这里,虽然它提供了LINQ查询,但它不会创建替换当前存储过程调用所需的实际代码。@Fosco:是的,这并不理想。我必须一次执行一个存储过程,但我至少可以在我的C项目中搜索存储过程。@Jesper有没有可能发布一些代码?我真的搞不懂像select*from x这样的简单存储过程(其中id=@param)是如何给您带来这么多麻烦的。。。还有布里
将LINQ转换为它,而不仅仅是将其转换为SQLCommand。。。精神崩溃。我开始认为代码问题与数据访问几乎没有关系。@Fosco我认为您可能没有抓住要点,这不是因为您对SQL感到不舒服,而是通过将数据访问代码移出数据库并移入应用程序来整合逻辑。LINQ与SQL相比也有一些优势,它为您提供了数据库上的强类型DAL,以确保编译类型的安全,并且是一种标准化的查询语言,用于XML和内存对象等其他数据源。我刚刚下载了它并运行了它,然后AVG在temp中给了我特洛伊木马下载程序警报Tutils.exe。我将不得不调查,但avg运行所有的时间不知道他们是否有联系,但要小心。