Обновление с 2017 года:
Реально, ответ нет, и даже если бы вы были, вы должны быть крайне осторожны с его использованием .
На самом деле есть только два способа решения этой проблемы:
a) Укусить пулю и перевести все вручную и кропотливо, а также с помощью некоторого метода проверки, чтобы убедиться, что все продолжает работать так, как задумано, например, единица / регрессиятесты.Используйте такие инструменты, как Linqer, если таковые имеются, например помощь , для решения части проблемы.
b) Начните все с нуля.
Варианта c нет)чтобы что-то еще обрабатывало все аккуратно и автоматически, и это не могло охватить все случаи.T-SQL может многое сделать, чего не может LINQ (обновляет, вставляет и удаляет источник), и многие вещи, которые вам лучше выполнить другим способом в C # (например, курсоры).
Очень немногие проблемы, подобные этой, получают хорошо продуманные, исчерпывающие решения, которым можно не доверять функциональности (например, коммерческие конвертеры VB6 в VB.NET, которые могут оправдать затраты огромных усилий из-за огромного количества потенциальных клиентов там, где выВы можете взять телефон или адвоката, если что-то пойдет не так), поэтому, если такой инструмент существует, вы должны быть чрезвычайно осторожны.Перевод из LINQ-совместимого подмножества SQL в LINQ - это ограниченная проблема, которая хорошо понятна, и я думаю, что Linqer можно доверять.
Этот вопрос пытался найти инструмент, который мог бы помочь свариант а) но я думаю, что многие люди, читающие это, ищут вариант в).Существует подмножество этого вопроса и ответа, которое не является ужасной идеей, но оно не автоматизирует оставшееся бремя, так как даже многие из простых хранимых процедур делали больше, чем запросы в форме, выражаемой LINQ.Для любого из проектов, о которых я упомянул, все еще было слишком невыгодно использовать вариант а).
Исходный вопрос следующий:
У меня есть несколько проектов, которые поддерживают многоХранимые процедуры 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 и дал код любого из этиххранимые процедуры, я мог бы сказать вам, что они делают.Есть очень веские практические причины, по которым я не хочу, чтобы логика продолжала находиться в хранимых процедурах.