0
我想調用映射我的域類到DTO類的方法,但是經過很多嘗試使用LINQ to Entities或LINQ to objects我失敗了,奇怪的不同的錯誤。 Actulal錯誤只是一個「LINQ to Entities不能識別方法System.String ResizeToLogoImage(System.String)'的方法,並且這種方法不能被轉換成存儲表達式。」asp.net web api 2 LINQ to Entities無法識別該方法
映射方法:
public async Task<SingleCategory> SingleCategoryMapping(EventerApiContext context, int id)
{
var category = await context.Category.Select(c => new SingleCategory
{
CategoryId = c.CategoryId,
CategoryName = c.CategoryName,
CityId = c.CityId,
Events = context.Event.ToList().Where(e=>e.CategoryId == id).Select(e=> new EventForSingleCategory
{
EventId = e.EventId,
EventName = e.EventName,
EventLogo = ImageProcessor.ResizeToLogoImage(e.EventDetail.EventImage.EventImageBase64)
}).ToList()
}).SingleOrDefaultAsync(c => c.CategoryId == id);
return category;
}
方法被調用。
public static string ResizeToLogoImage(string base64String)
{
if (base64String == null)
{
return "NULL";
}
var imageToResize = Base64ToImage(base64String);
var resizedImage = ScaleImage(imageToResize, 50, 50);
return ImageToBase64(resizedImage, imageToResize.RawFormat);
}
我知道錯誤出現在EventLogo屬性映射期間,但我不知道該怎麼辦。
那麼,這個表達式不能在SQL查詢中被翻譯,就是這樣。所以,在應用這種方法之前,你必須走出'IQueryable'世界。問題:你沒有Event和Category之間的導航屬性嗎? –