我有一个带有自定义方法的模型类:
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
未实施此方法。
如何保持我的查询异步并调用上面提到的方法?有什么想法吗?
谢谢大家!
答案 0 :(得分:0)
如果所有其他方法都失败,则进行内联投影
Context.Categories.Select(c => new CategoryListViewModel {
Id = c.Id,
Name = c.Name
}).ToListAsync();
因此,它可以正确生成,因为实体的linq必须能够将查询转换为实际的SQL语句。