首页 > 解决方案 > 从类型中抽象,并在 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”子句,然后选择在不同的属性上“切片”。

一个例子可能是:

人口:汽车,地点:

我将如何以这样一种方式编写这个,以便我可以从单个表/属性等中抽象出构建 SQL 查询的代码。

此外,在表本身上创建元数据以从前端工具中排除表或列(Id)等、创建我自己的属性并从客户端动态排除这些属性的“最佳”方法是什么?

在此处输入图像描述

标签: c#asp.netentity-frameworkblazor

解决方案


推荐阅读