让我们说我有一个具有此功能的存储库
public async Task<IEnumerable<Contacts>> GetAll()
{
return await _context.Contacts.ToListAsync();
}
其中Contacts实体与返回呼叫的实体相同。但是我不想使用同一个类,因为有些字段我希望避免调用。我可以通过任何方式“镜像”另一个名为“ ContactsModel”的模型,而无需使用匿名调用来返回数据:
var result = context.t_validation.Where(a => a.isvalidated == 10).Select(x => new
{
x.date_released,
x.utoken,
x.Images,
x.images_key,
x.Type
});
进入循环并传递给这个新模型:
foreach (var item in list)
{
decp.Add(new ValidationModel
{
uToken = item.utoken,
Date = item.date_released,
Images = bc.Decrypt(item.Images, item.images_key),
Type = item.Type
});
}
谢谢!
答案 0 :(得分:2)
由于您正在使用自定义方法解密图像,因此您将无法将其包含在查询中,因为EF无法将其转换为sql查询。
匿名方法将是最好的方法
public async Task<IEnumerable<Contacts>> GetAll()
{
var models = await _context
.Contacts
.Select(contact => new
{
contact.date_released,
contact.utoken,
contact.Images,
contact.images_key,
contact.Type
})
.ToListAsync()
return models
.Select(item => new ValidationModel
{
uToken = item.utoken,
Date = item.date_released,
Images = bc.Decrypt(item.Images, item.images_key),
Type = item.Type
}
.ToList();
}
您当然可以使用扩展方法将其包装起来,但是如果仅在一个地方使用此映射,则不需要。