0

私のコントローラーには、10 進数値 (id) を受け取るメソッドがあります。このメソッドの目的は、作業許可を含むデータベース テーブルから古いリビジョンのリストを復元することです。このテーブルの各レコードには、主キーとしての WorkPermitID と、以前のバージョンの ID を参照する OldRevisionWorkPermitID があります。

子 ID (古いバージョン) を収集するときに問題はありませんが、LINQ to Entities が.ToString()メソッドを認識しないことを示す例外が発生します。

私が間違っていることは何ですか?文字列に変換せずに行う必要があることはわかっていますが (WorkPermitID はデータベースで数値として定義されています)、いくつかの方法を試しましたが成功しませんでした。

public ActionResult GetVersions(decimal id){


                    var model = new PermisosTrabajoModel();

                    List<string> ChildIDs = new List<string>();

                    var WP = OtWeb.WorkPermit.Single(q => q.WorkPermitID == id);

                    while (WP.OldRevisionWorkPermitID != null)
                    {
                        var child = WP.OldRevisionWorkPermitID;
                        ChildIDs.Add(child.ToString());
                        WP = OtWeb.WorkPermit.Single(q => q.WorkPermitID == child);
                    }


                    model.WPs = OtWeb.WorkPermit
                                .Where(q => q.DeptID == 1
                                && ChildIDs.Contains(q.WorkPermitID.ToString())).ToList();

return View (model);
}
4

1 に答える 1

1

ソリューション1

両方のフィールドがdecimal... を使用しないToString()で、のリストを使用する場合decimal

var モデル = 新しい PermisosTrabajoModel();

var childIDs = new List<decimal>();

var WP = OtWeb.WorkPermit.Single(q => q.WorkPermitID == id);

while (WP.OldRevisionWorkPermitID != null)
     {
         childIDs.Add(WP.OldRevisionWorkPermitID);
         WP = OtWeb.WorkPermit.Single(q => q.WorkPermitID == child);
     }
model.WPs = OtWeb.WorkPermit
                .Where(q => q.DeptID == 1
                       && childIDs.Contains(q.WorkPermitID)).ToList();

ソリューション2

linq2entitiesでは、数値に対して ToString() の代わりにSqlFunctions.StringConvertを使用できます。

SqlFunctions.StringConvert(q.WorkPermitId)

それ以外の

q.WorkPermitID.ToString()

例えば

于 2013-07-02T12:15:34.257 に答える