我試圖模擬EF上IDBcommandInterceptor
對於插入/更新操作是很簡單 - 我可以返回由單場的DbDataReader
或int 然而,對於選擇操作,如果有一些「有」,那麼SQL結果的形狀是相當... 真棒EF上IDBcommandInterceptor和DBDataReader
我怎麼會從
ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader>
領域和名稱,爲DbDataReader
結果對應的實體獲得?
謝謝
例子:試圖讀取Department(Id, Name) from Id with include on Employee(Id, Name .IDDepartment, DateModification, DateCreation, User)
是獲得DBDataReader爲包括低於該命令。
我想知道字段名稱(如C1
,ID1
,Name1
等)是否能夠模擬。
SELECT
[Project2].[Id] AS [Id],
[Project2].[Name] AS [Name],
[Project2].[C1] AS [C1],
[Project2].[Id1] AS [Id1],
[Project2].[Name1] AS [Name1],
[Project2].[IDDepartment] AS [IDDepartment],
[Project2].[DateModification] AS [DateModification],
[Project2].[DateCreation] AS [DateCreation],
[Project2].[User] AS [User],
[Project2].[Archive] AS [Archive]
FROM (SELECT
[Limit1].[Id] AS [Id],
[Limit1].[Name] AS [Name],
[Extent2].[Id] AS [Id1],
[Extent2].[Name] AS [Name1],
[Extent2].[IDDepartment] AS [IDDepartment],
[Extent2].[DateModification] AS [DateModification],
[Extent2].[DateCreation] AS [DateCreation],
[Extent2].[User] AS [User],
[Extent2].[Archive] AS [Archive],
CASE WHEN ([Extent2].[Id] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]
FROM (SELECT TOP (1)
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name]
FROM [dbo].[Department] AS [Extent1]
WHERE [Extent1].[Id] = @p__linq__0) AS [Limit1]
LEFT OUTER JOIN [dbo].[Employee] AS [Extent2] ON [Limit1].[Id] = [Extent2].[IDDepartment]
) AS [Project2]
ORDER BY [Project2].[Id] ASC, [Project2].[C1] ASC
你在這裏說什麼是如何將IDataReader轉換爲數據表。請再讀一遍這個問題 - 我沒有IDataReader - 我也不想將DbCommand運行到數據庫。 – ignatandrei 2014-10-08 02:50:45