Это немного субъективный вопрос о конкретной ситуации. Основная цель этого вопроса для меня - напомнить себе, что нужно кодировать решение. Однако, если уже существует решение или альтернативный подход, я хотел бы знать об этом.
Я работаю над проектом и использую Entity Framework 4 для доступа к базе данных. Дизайн базы данных - это то, что я не могу контролировать. База данных была разработана много лет назад, и, на мой взгляд, дизайн базы данных не подходит для текущих целей. Это приводит к очень сложным запросам.
Я впервые использую Entity Framework в проекте, но у меня есть обширный опыт разработки для MS SQL Server.
Я снова и снова делал следующее: :
Честно говоря, я начинаю думать, что не следует использовать ORM, если у вас нет собственного дизайна базы данных .
Помимо этого, я хочу автоматизировать процесс отмены экранирования sql и замены параметров. Цель состоит в том, чтобы получить «голый» депараметризованный sql, который я могу запускать в SSMS.
Это очень простой пример того, что я вижу в профиле и что я хочу получить в результате. Мои реальные случаи во много раз сложнее.
Захват:
exec sp_executesql N'SELECT
[Extent1].[ProductName] AS [ProductName]
FROM [dbo].[Products] AS [Extent1]
INNER JOIN [dbo].[Categories] AS [Extent2] ON [Extent1].[CategoryID] = [Extent2].[CategoryID]
WHERE ([Extent1].[UnitPrice] > @p__linq__0) AND ([Extent2].[CategoryName] = @p__linq__1) AND (N''Chang'' <> [Extent1].[ProductName])',N'@p__linq__0 decimal(1,0),@p__linq__1 nvarchar(4000)',@p__linq__0=1,@p__linq__1=N'Beverages'
Желаемый результат:
SELECT
[Extent1].[ProductName] AS [ProductName]
FROM [dbo].[Products] AS [Extent1]
INNER JOIN [dbo].[Categories] AS [Extent2] ON [Extent1].[CategoryID] = [Extent2].[CategoryID]
WHERE ([Extent1].[UnitPrice] > 1) AND ([Extent2].[CategoryName] = N'Beverages') AND (N'Chang' <> [Extent1].[ProductName])
Я просто собираюсь написать код для преобразования подобных первого в подобные второму, если нет ничего лучше, я выложу решение здесь. Но может это уже кто-то сделал? А может есть профайлер или еще что, который может дать мне sql-код, который я могу частично выполнить в SSMS?