Есть ли инструмент для преобразования хранимых процедур T-SQL в C #? - PullRequest
9 голосов
/ 19 мая 2011

Обновление с 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 и дал код любого из этиххранимые процедуры, я мог бы сказать вам, что они делают.Есть очень веские практические причины, по которым я не хочу, чтобы логика продолжала находиться в хранимых процедурах.

1 Ответ

2 голосов
/ 19 мая 2011

Оформить Linqer :

Linqer - это средство преобразования SQL в LINQ.Это поможет вам изучить LINQ и преобразовать существующие операторы SQL.

Не каждый оператор SQL можно преобразовать в LINQ, но Linqer охватывает множество различных типов выражений SQL.

Поскольку LINQ является частьюC #, он чувствителен к преобразованию типов данных.Linqer выполняет необходимые приведения типов в созданных операторах LINQ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...