关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
去年关闭。
Improve this question
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,并且给定这些存储过程中的任何一个的代码,我可以告诉您它们的作用。我不希望逻辑继续驻留在存储过程中有非常好的实际原因。
最佳答案
退房 Linqer :
Linqer is a SQL to LINQ converter tool. It helps you to learn LINQ and convert your existing SQL statements.
Not every SQL statement can be converted to LINQ, but Linqer covers many different types of SQL expressions.
Because LINQ is a part of C#, it is sensitive to data types conversion. Linqer performs required type castings in the produced LINQ statements.
关于c# - 是否有将 T-SQL 存储过程转换为 C# 的工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6059370/
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案
我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查
我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub