C# 如何针对未映射的运行时类型创建IQueryable
我有一些在运行时创建的表,需要查询这些表以进行网格显示。我还有一个应用网格功能的实用程序函数,如接受IQueryable的动态排序、过滤和分页。是否有一种方法可以使用ORM库(不限于EF或LINQ2SQL)创建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
- 表的结构可能不同,因此我不能使用任何映射工具将执行的列表映射到不同的视图模型
- 表的名称在运行时配置
- 运行时类型的结构将与它关联的表的结构完全匹配
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是的。该类型是在运行时生成的。该类型将与数据库表匹配。