我不确定这是否可能。我可能正在为尝试执行的工作使用错误的工具。
假设我要执行以下操作:
我执行一个名为“ GetTableName”的函数,该函数返回要从中获取数据的SQL表的名称。
我执行另一个名为“ GetFields”的函数,该函数返回SQL表中一个或多个字段的名称。
我希望能够编写另一个函数,该函数将返回一个数据集(或其他通用对象),该数据集包含“ GetTableName”指定的表中的行以及“ GetFields”指定的字段中的行
我知道我可以使用旧的ADO.net接口执行此操作,但是是否有使用Entity Framework执行此操作的适当方法?
需要强调的是,代码在编译时 不会 知道从SQL返回的数据的形状。
由于EF需要映射复杂的类型,因此有可能编写一个继承自ExpandoObject的类,然后您可以(使用大量编码)将其映射到DataTable类或按原样使用。然后,您基本上需要告诉EF以某种方式尝试映射到那些属性。但是,我认为这将是一段漫长而曲折的代码,重载和基本上重写EF:s对象映射的核心功能的旅程。
在本示例中可以看到,编写者动态创建模型的地方仍然很艰辛。您根据数据自动生成属性的部分:http : //www.markzhou.com/blog/post/2011/06/02/Use-dynamic-type-in-Entity- Framework-41-SqlQuery() -method.aspx
如果需要DataTable,我真的建议您使用ADO.NET。