LINQ到实体无法识别方法 - 异步操作



我在:

中具有自定义方法的模型类
public class Category {
    public int Id { get; set; }
    public string Name { get; set; }
    public CategoryListViewModel ToListViewModel() {
        return new CategoryListViewModel { 
            Id = this.Id,
            Name = this.Name
        };
    }

很好。在我的存储库层中,我正在尝试使用System.Data.Entity可用方法(例如ToListAsync())进行异步查询。但是,当我尝试调用以下代码时...

Context.Categories.Select(c => c.ToListViewModel()).ToListAsync();

编译器向消息投诉:LINQ to Entities does not recognize "ToListViewModel()" method [...]

我可以做以下内容以使查询支持该方法...

Context.Categories.AsEnumerable().Select(c => c.ToListViewModel())

...尽管我无法调用ToListAsync(),因为IEnumerable没有实现此方法。

如何保持我的查询异步并称之为上述方法?有任何想法吗?

谢谢大家!

如果其他所有失败

Context.Categories.Select(c => new CategoryListViewModel { 
            Id = c.Id,
            Name = c.Name
        }).ToListAsync();

,可以正确生成,因为LINQ对实体必须能够将查询转换为实际的SQL语句。

相关内容

最新更新