Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何针对未映射的运行时类型创建IQueryable_C#_Entity Framework_Linq To Sql_Orm_Iqueryable - Fatal编程技术网

C# 如何针对未映射的运行时类型创建IQueryable

C# 如何针对未映射的运行时类型创建IQueryable,c#,entity-framework,linq-to-sql,orm,iqueryable,C#,Entity Framework,Linq To Sql,Orm,Iqueryable,我有一些在运行时创建的表,需要查询这些表以进行网格显示。我还有一个应用网格功能的实用程序函数,如接受IQueryable的动态排序、过滤和分页。是否有一种方法可以使用ORM库(不限于EF或LINQ2SQL)创建IQueryable,然后将其传递给实用程序函数 其他一些注意事项: 表的结构可能不同,因此我不能使用任何映射工具将执行的列表映射到不同的视图模型 表的名称在运行时配置 运行时类型的结构将与它关联的表的结构完全匹配 因此,理想情况如下: var dynamicType = GetDyn

我有一些在运行时创建的表,需要查询这些表以进行网格显示。我还有一个应用网格功能的实用程序函数,如接受IQueryable的动态排序、过滤和分页。是否有一种方法可以使用ORM库(不限于EF或LINQ2SQL)创建IQueryable,然后将其传递给实用程序函数

其他一些注意事项:

  • 表的结构可能不同,因此我不能使用任何映射工具将执行的列表映射到不同的视图模型
  • 表的名称在运行时配置
  • 运行时类型的结构将与它关联的表的结构完全匹配
因此,理想情况如下:

var dynamicType = GetDynamicType() // Gets the Dynamic Type based on runtime values
using (var db = _repositoryFactory.Create()) // Returns ORM to Use
{
    var query = db.GetTable(dynamicType, "_TableName") // Returns an IQueryable<T> where T is the typeof(dynamicType)
    var result = _parser.Parse(request, query) // Applies the grid transformations against the IQueryable (sorting, filtering, paging) and returns the result (raw data from server)
}
var dynamicType=GetDynamicType()//基于运行时值获取动态类型
using(var db=\u repositoryFactory.Create())//返回要使用的ORM
{
var query=db.GetTable(dynamicType,“\u TableName”)//返回一个IQueryable,其中T是typeof(dynamicType)
var result=\u parser.Parse(request,query)//对IQueryable应用网格转换(排序、筛选、分页)并返回结果(来自服务器的原始数据)
}

ORM的要点是将类设置为表,并将其属性设置为这些表的列。那么,你不能用LINQ to对象创建一个查询吗?@Dabblernl我正试图做到这一点,只是在运行时。我知道ORM是为编译时而设计的,这似乎有点违反直觉,但我不希望破坏解析器。您可以使用LINQ来处理对象,但是我更喜欢延迟执行,因为解析器是为延迟执行而设计的。GetDynamicType()是什么意思?你在运行时创建类型吗?@AntonínLejsek是的。该类型是在运行时生成的。该类型将匹配数据库表。ORM的要点是将类设置为表,并将其属性设置为这些表的列。那么,你不能用LINQ to对象创建一个查询吗?@Dabblernl我正试图做到这一点,只是在运行时。我知道ORM是为编译时而设计的,这似乎有点违反直觉,但我不希望破坏解析器。您可以使用LINQ来处理对象,但是我更喜欢延迟执行,因为解析器是为延迟执行而设计的。GetDynamicType()是什么意思?你在运行时创建类型吗?@AntonínLejsek是的。该类型是在运行时生成的。该类型将与数据库表匹配。