c# - 从类型中抽象,并在 ASP.NET / C# 中动态构建实体框架查询
问题描述
我正在 Blazor 中构建一个自助报告工具,它允许用户选择特定的数据集(所有这些数据集都使用实体框架存储),然后按数据库中的各种属性/列进行过滤。
有没有办法从 Web 服务器上的“类型”编码中抽象出来(比如使用IQueryable
或类似的东西)来根据用户选择动态构建 LINQ 命令?
例如,假设我们有以下两个类:
public class Car
{
public int Year { get; set; }
public string Color { get; set; }
public Company Make { get; set; }
public string Model { get; set; }
public int Weight { get; set; }
public int MilesPerGallon { get; set; }
...
}
和
public class Company
{
public string Name { get; set; }
public Country CountryOfOrigin { get; set; }
public DateTime Founded { get; set; }
...
}
用户界面中的用户将能够选择“Car”作为数据库,然后通过将属性限制为各种值来选择“Where”子句,然后选择在不同的属性上“切片”。
一个例子可能是:
人口:汽车,地点:
- 年份介于 1970 年和 1979 年之间。
汽车的制造商(公司) CountryOfOrigin 是“美国”
- 切片:制作
- 排序方式:计数,降序
- 颜色:每加仑英里数
我将如何以这样一种方式编写这个,以便我可以从单个表/属性等中抽象出构建 SQL 查询的代码。
此外,在表本身上创建元数据以从前端工具中排除表或列(Id)等、创建我自己的属性并从客户端动态排除这些属性的“最佳”方法是什么?
解决方案
推荐阅读
- android - Android分析器如何减少本机内存使用
- android - 一加设备面临连接超时问题
- flutter - Flutter http包中服务器响应的长度
- triggers - Salesforce 代码覆盖失败:尽管 Sandbox 中的代码覆盖率为 100%,但无法在生产中部署 Apex 触发器
- java - 如何创建具有命名卷的容器?
- vue.js - 使用 Rest API POST 将文件上传到 Google Cloud Buckets
- php - WooCommerce:在完成一定数量的订单或一个订单的最小数量后自动更改用户角色
- c - 在文件读/写操作返回 -1 后调用 fsync
- python - Python 中 lambda 函数的多个文件和一个处理程序
- mysql - 通过在 MySQL 中组合两个表来获取每个数据的计数