Entity framework IDBcommandInterceptor和DBDataReader上的EF
我试图在Entity framework IDBcommandInterceptor和DBDataReader上的EF,entity-framework,idbcommand,Entity Framework,Idbcommand,我试图在IDBcommandInterceptor 对于insert/update操作,它足够简单-我可以返回一个由单个字段或int组成的DbDataReader 但是,对于select操作,如果有一些“include”,那么sql结果的形状是非常漂亮的。。。棒极了 我怎样才能从 ReaderExecuting(DbCommand命令,DbCommandInterceptionContext结果的字段、名称和相应的实体 谢谢, 示例:尝试从Id中读取部门(Id,名称),包括在员工(Id,Name
IDBcommandInterceptor
对于insert/update操作,它足够简单-我可以返回一个由单个字段或int组成的DbDataReader
但是,对于select操作,如果有一些“include”,那么sql结果的形状是非常漂亮的。。。棒极了
我怎样才能从
ReaderExecuting(DbCommand命令,DbCommandInterceptionContext
结果的字段、名称和相应的实体
谢谢,
示例:尝试从Id中读取部门(Id,名称),包括在员工(Id,Name.IDDepartment,DateModification,DateCreation,User)上的Id
获取包含的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
通过这样做,您应该能够从读者那里获得列名
var columns = Enumerable.Range(0, reader.FieldCount) .Select(reader.GetName).ToList();
在这种情况下,您只需要名称。如果您获得结果表的整个架构,您可以通过以下操作获得:
DataTable schemaTable = reader.GetSchemaTable();
然后遍历datatable中的行集合,以获取每列的属性
这有助于回答您的问题吗?您在这里说的是如何将IDataReader转换为datatable。请重新阅读问题-我没有IDataReader-也不想对数据库运行DbCommand。