2011-10-18 11 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); 
    } 

た画像情報は、情報が保存されdefintion(ID、言語、スクリーンショット、PROJECTID)が含まれて単純なクラスです。

は、ここに私のByteArrayToImage機能です:このコードが実行されるとき、私はこのエラーが発生した理由を

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

誰も教えてもらえますか?

ありがとうございました。

答えて

1

LINQ-to-Entitiesを使用すると、コードがサーバー側のクエリに変換されるため、この場合は実行できません。私はこのようなクライアントサイドのコードをL2Eと直接混在させることはできないと思います。

データベースからデータを個別の手順として取得した後に、byte-> imageから変換する必要があると思われます。

+0

奇妙な、これはLINQ to SQLで動作します。私はとにかく感謝の気持ちで仕事を追加します! –

1

あなたは...エンティティクエリにLINQで1つのオプション機能を実行することはできません。

1)を使用すると、インスタンス化されているオブジェクト(画像情報)のバイト[]プロパティを持っているし、そこにデータをコピーしますこのImageInformationオブジェクトからイメージを読み取るためのもう1つの特性があります。