3

Int32.ParseEFがwhere条件セクションで変換できないのはなぜですか?

たとえば、以下のコードにはエラーがあります:

var query = (from list in dbContext.Packages
                             where list.Id == Int32.Parse(Request["Id"].ToString())
                             select list).FirstOrDefault();

私はこの問題を解決しました:

Int32 ID = Int32.Parse(Request["Id"].ToString());
 var query = (from list in dbContext.Packages
                             where list.Id == ID
                             select list).FirstOrDefault();
4

2 に答える 2

2

クエリは、SQL に変換される単なる式であるためです。

EFInt32.Parseは同等の SQL ステートメントに変換する方法を知らないため、失敗します。

于 2012-09-04T14:56:38.217 に答える
1

あなたが問題を解決した方法は正しいです。

where list.Id == Int32.Parse(Request["Id"].ToString())、それが機能する場合は、データベースに送信Requestし、データベースを抽出してから、および["Id"]を呼び出すことを意味します。ToString()Int32.Parse()

Int32 ID = Int32.Parse(Request["Id"].ToString());クライアントで実行されます。次に整数値を取得し、その整数値のみがデータベースに送信されます。

于 2012-09-04T14:58:11.193 に答える