0

次のコードは、linqクエリを介してデータベースから画像を取得するために使用しましたが、次のようなエラーが発生します

LINQ to Entitiesは、メソッド'System.String ToString(System.String)'メソッドを認識せず、このメソッドをストア式に変換できません。

//エラーでコード化されたエラー行が発生しました。

public void ProcessRequest (HttpContext context) {

        HttpRequest req = context.Request;


        MembershipUser user_id1 = Membership.GetUser();
        string user_id = user_id1.ProviderUserKey.ToString();      

        // string categoryID =Convert.ToInt32("4");// req.QueryString["CategoryID"].ToString();
        // Get information about the specified category          
        TMSEntities db = new TMSEntities();
        //get User ID From Login


        var category = (from data in db.Register1_db
                       where data.User_ID == Convert.ToString(user_id)
                       select data.Student_Photo);

        //error occurred.
        int len = category.First().Length;

        // Output the binary data          
        // But first we need to strip out the OLE header          
        int OleHeaderLength = 78;
        int strippedImageLength = len - OleHeaderLength;
        byte[] imagdata = new byte[strippedImageLength];          
        Array.Copy(category.First().ToArray(), OleHeaderLength, imagdata, 0, strippedImageLength);          
        if ((imagdata) != null)          
        {              
            MemoryStream m = new MemoryStream(imagdata);              
            System.Drawing.Image image = System.Drawing.Image.FromStream(m);              
            image.Save(context.Response.OutputStream, ImageFormat.Jpeg);          
        }




}




public bool IsReusable {
    get {
        return false;
    }
}
4

2 に答える 2

1

エラーが発生している行を見てください。

var category = (from data in db.Register1_db
                where data.User_ID == Convert.ToString(user_id)
                select data.Student_Photo);

Convert.ToString(user_id)Linq to Entities で使用できる式ではありません。

あなたのコードを見ると、user_idすでに文字列であり、変換を必要としないことがわかります。したがって、これはより適切に機能するはずです。

var category = (from data in db.Register1_db
                where data.User_ID == user_id
                select data.Student_Photo);
于 2012-10-06T14:56:32.640 に答える
0

これはうまくいくはずです:

var string_id = Convert.ToString(user_id);
var category = (from data in db.Register1_db
                       where data.User_ID == string_id
                       select data.Student_Photo);

LINQ は式ツリーを作成するため、Convert.ToString呼び出されませんが、LINQ プロバイダーによって解釈される必要があります。

于 2012-10-06T14:57:19.580 に答える