【发布时间】:2020-11-10 19:22:04
【问题描述】:
背景:
给定以下两个实体通过一对一的关系联合起来:
public partial class Parent
{
public long Id { get; set; }
public string Email { get; set; }
public virtual Details Details{ get; set; }
}
public partial class Details
{
public long Id { get; set; }
public long ParentId{ get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime Dob { get; set; }
public virtual Parent Parent { get; set;}
}
并且拥有以下Query 模型:
public class Query
{
public string Email { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? Dob { get; set; }
}
问题
如何将Query 作为IQueryable 应用于Parent(或Details)实体?
基于我的用例的注释:
-
Query类不能有Parent和Details的两个子类(应该展平) - DB SQL 查询应获取与
Parent和Details中的两个条件匹配的结果(如果条件不符合详细信息,则父级不应出现在结果中)。 -
Query模型中可能有很长的可选字段列表。这意味着数据库查询应该是动态且足够智能的,以知道如何构建查询并知道Query中的每个字段属于哪个实体Parent或Details(即我不想要一个解决方案添加条件检查Dob是否存在于Query中)
用例:
我正在使用HotChocolate 框架来集成使用expression trees 构建查询的GraphQL。提到了我要解决的问题here
我们将非常感谢您的支持和建议!
【问题讨论】:
标签: c# entity-framework expression-trees iqueryable hotchocolate