问题从数据库中检索屏幕截图

时间:2011-10-18 16:13:45

标签: asp.net-mvc-3 c#-4.0 orm

我有一些屏幕截图和一些截图元数据我试图在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;
    }
} 

有人能告诉我为什么在这段代码运行时会收到此错误吗?

感谢。

2 个答案:

答案 0 :(得分:1)

我认为这是因为,对于LINQ-to-Entities,代码转换为服务器端查询,在这种情况下它不能这样做。我不认为你可以将这样的客户端代码直接与L2E混合使用。

我怀疑在您从数据库中检索数据作为一个独特的步骤后,您将不得不从byte-&gt;图像进行转换。

答案 1 :(得分:1)

您无法在LINQ to Entities查询中执行此功能...一个选项:

1)在您要实例化的对象(ImageInformation)上有一个byte []属性,并将数据与另一个属性一起复制,以从此ImageInformation对象中读取图像。