我在:
中具有自定义方法的模型类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语句。