为了账号安全,请及时绑定邮箱和手机立即绑定

C#EF6条件属性选择?

C#EF6条件属性选择?

C#
守着星空守着你 2021-04-28 17:26:31
假设我有代码优先模型:public class FooBar{    [Key]    public int Id {get;set;}    [MaxLength(254)]    public string Title {get;set;}    public string Description {get;set;}}和检索行数据的一些子集的方法:public IQueryable<FooBar> GetDataQuery(bool includeTitle, bool includeDescription){    var query = ctx.FooBars.AsNoTracking().Where(Id > 123);    //how to inlcude/exclude???    return query;}问题是如何使用特定字段构建查询而无需对匿名类型进行硬编码?基本上,我想告诉SQL查询构建器构建具有指定字段的查询,而无需在客户端上对它进行后期过滤。因此,如果我排除描述-它不会通过电线发送。另外,有这样的经验:public IQueryable<FooBar> GetDataQuery(bool includeTitle, bool includeDescription){    var query = ctx.FooBars.AsNoTracking().Where(Id > 123);    query = query.Select(x=> new    {           Id = x.Id         Title = includeTitle ? x.Title : null,         Description = includeDescription ? x.Description : null,    })    .MapBackToFooBarsSomehow();//this will fail, I know, do not want to write boilerplate to hack this out, just imagine return type will be correctly retrieved    return query;}但这将通过有线方式传递includeTitle,includeDescription属性作为EXEC的SQL参数,并且与没有这种混乱情况的简单非条件匿名查询相比,在大多数情况下查询效率低下-但是编写匿名结构的所有可能排列都不是一种选择。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信