2011-10-18 23 views
1

我有一堆屏幕截图和一些屏幕截图元数据我试图在ASP.NET MVC 3 Web应用程序中显示,我试图从我的数据库中检索数据但我得到这个错误:问题从数据库检索屏幕截图

LINQ to Entities does not recognize the method 'System.Drawing.Image ByteArrayToImage(Byte[])' method, and this method cannot be translated into a store expression.

这里是我的代码:

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,语言,截图,专案编号)。

这是我的ByteArrayToImage功能:

public static Image ByteArrayToImage(byte[] byteArrayIn) 
{ 
    using (MemoryStream ms = new MemoryStream(byteArrayIn)) 
    { 
     Image returnImage = Image.FromStream(ms); 
     return returnImage; 
    } 
} 

谁能告诉我为什么这个代码运行时我收到此错误?

谢谢。

回答

1

我认为这是因为,与LINQ到实体,代码转换为服务器端查询,它不能这样做。我不认为你可以将这种客户端代码直接与L2E混合使用。

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

+0

奇怪的是,这与LINQ to SQL的工作我认为..我会加入一个工作无论如何谢谢! –

1

你不能做功能在LINQ到实体查询......一个选项:

1)有你实例化(ImageInformation对象上的一个byte []属性),并在那里复制数据以及另一个从这个ImageInformation对象读取图像的操作。