首页 > 解决方案 > 实体框架搜索具有泛型的多列

问题描述

我正在尝试完成一个在 API 中跨多个控制器使用的搜索功能。我目前也在使用存储库模式。我只会显示存储库的相对部分。

public interface IRepository<T> where T class, IEntity, new()
{
   IQueryable<T> Get(); 
}

我们创建了一个类似于以下内容的 API 端点:

public abstract BaseApiController<T>:ApiController where T:class, IEntity, new()
{
   public async Task<IHttpActionResult> GetSearchPage(int pageNumber, string searchText)
   {
      var properties = typeof(T).GetProperties();
        var query = await Repository.Get().Where(t=>
            properties.Any(prop => prop.GetValue(t,null).ToString().Contains(searchText))
        )
        .AsNoTracking()
        .ToListAsync();
        return Ok(query);
   }
}

我收到以下错误:

无法创建类型为“System.Reflection.PropertyInfo”的常量值。此上下文仅支持原始类型或枚举类型。

那么,关于我的问题:如何使用此存储库搜索多个通用列?

标签: c#genericsentity-framework-6

解决方案


推荐阅读