我有一些屏幕截图和一些截图元数据我试图在ASP.NET MVC 3 Web应用程序中显示,我正在尝试从我的数据库中检索数据但是我收到此错误:< / p>
LINQ to Entities无法识别方法'System.Drawing.Image ByteArrayToImage(Byte [])'方法,并且此方法无法翻译 进入商店表达。
这是我的代码:
var screenshotData = (from screenshots in db.screenshots
where screenshots.projects_ID == projectID
select new ImageInformation
{
ID = screenshots.id,
Language = screenshots.language,
Screenshot = Utility.ByteArrayToImage(screenshots.screen_shot),
ProjectID = screenshots.projects_ID
});
foreach (ImageInformation info in screenshotData)
{
this.Add(info);
}
ImageInformation只是一个简单的类,其中包含存储信息的定义(ID,语言,屏幕截图,ProjectID)。
这是我的ByteArrayToImage函数:
public static Image ByteArrayToImage(byte[] byteArrayIn)
{
using (MemoryStream ms = new MemoryStream(byteArrayIn))
{
Image returnImage = Image.FromStream(ms);
return returnImage;
}
}
有人能告诉我为什么在这段代码运行时会收到此错误吗?
感谢。
答案 0 :(得分:1)
我认为这是因为,对于LINQ-to-Entities,代码转换为服务器端查询,在这种情况下它不能这样做。我不认为你可以将这样的客户端代码直接与L2E混合使用。
我怀疑在您从数据库中检索数据作为一个独特的步骤后,您将不得不从byte-&gt;图像进行转换。
答案 1 :(得分:1)
您无法在LINQ to Entities查询中执行此功能...一个选项:
1)在您要实例化的对象(ImageInformation)上有一个byte []属性,并将数据与另一个属性一起复制,以从此ImageInformation对象中读取图像。