0x49D1

0L4g0YDQsNC30YDQsNCx0L7RgtC60LUsINC00LvRjyDRgNCw0LfRgNCw0LHQvtGC0YfQuNC60L7QsiA=

Snippet: Раскрытие кода, генерируемого Entity провайдером.


Часто бывает полезно узнать, что же за код там генерит провайдер для запроса в базу, прежде, чем решить, что это подходит для продакшна…
Snippet:

var sql = ((System.Data.Objects.ObjectQuery)query).ToTraceString();

sql будет чем-то типа:

 
SELECT 
CAST(1 AS int) AS C1, 
Filter1.BRIGADE_ID AS BRIGADE_ID, 
....
Filter1.NAME AS NAME, 
Limit1.STATUS_DID AS STATUS_DID, 
Extent9.DESCRIPTION AS DESCRIPTION1, 
 CAST(Limit1.DATE_CREATED AS timestamp) AS C2, 
Limit1.CREATOR_ID AS CREATOR_ID1, 
 CAST(Limit1.DATE_MODIFIED AS timestamp) AS C3, 
Extent11.FULL_CASE_DAY_NUMBER AS FULL_CASE_DAY_NUMBER
FROM      LATERAL (SELECT Extent1.BRIGADE_ID AS BRIGADE_ID, Extent1.DEPARTMENT_DID AS DEPARTMENT_DID, Extent1.TYPE_DID AS TYPE_DID, Extent1.DIRECTION_DID AS DIRECTION_DID, Extent1.SQUAD_DID AS SQUAD_DID, Extent1.RADIO_NUMBER_DID AS RADIO_NUMBER_DID, Extent1.DATE_CREATED AS DATE_CREATED1, Extent1.CREATOR_ID AS CREATOR_ID1, Extent1.DATE_MODIFIED AS ....Extent7.DATE_CREATED AS DATE_CREATED7, Extent7.CREATOR_ID AS CREATOR_ID7, Extent7.DATE_MODIFIED AS DATE_MODIFIED7, Extent7.MODIFIER_ID AS MODIFIER_ID7, Extent7.DATE_DELETED AS DATE_DELETED7
	FROM       XXX.BRIGADES AS Extent1
	LEFT OUTER JOIN XXX.DICTIONARIES AS Extent2 ON Extent1.TYPE_DID = Extent2.DICTIONARY_ID
	........
	INNER JOIN XXX.BRIGADE_SQUARES AS Extent7 ON Extent1.BRIGADE_SQUARE_ID = Extent7.BRIGADE_SQUARE_ID
	WHERE Extent1.DATE_DELETED IS NULL ) AS Filter1
LEFT OUTER JOIN  LATERAL (SELECT Project1.BRIGADE_STATUS_HISTORY_ID AS BRIGADE_STATUS_HISTORY_ID, Project1.STATUS_DID AS STATUS_DID, Project1.DATE_CREATED AS DATE_CREATED, Project1.CREATOR_ID AS CREATOR_ID, Project1.DATE_MODIFIED AS DATE_MODIFIED
	FROM  LATERAL ( SELECT 
		.....  AS Project1
	ORDER BY Project1.BRIGADE_STATUS_HISTORY_ID DESC FETCH  FIRST 1 ROWS ONLY  ) AS Limit1 ON 1 = 1 
LEFT OUTER JOIN XXX.DICTIONARIES AS Extent9 ON Extent9.DICTIONARY_ID = Limit1.STATUS_DID
.....
LEFT OUTER JOIN XXX.CASES AS Extent11 ON Extent11.CASE_ID = Extent10.CASE_ID

Страшно, да?..Потому часто и надо писать View/SP.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: