0

これは私が今得ているエラーです:

The argument types 'Edm.String' and 'Edm.Decimal' are incompatible for this operation. Near equals expression, line 1, column 156.

このエラーが互換性の問題であることはわかっていますが、表を調べてパラメーターが一致し、適切に宣言されていることを確認した後、これが参照しているコード行を知る必要があります。私が疑問に思うのは、テーブルでお金として宣言されているデータだけですが、私はそれらを 10 進数として宣言しています。これは爆発するコードです

        public ActionResult Details(int PVID = 0, int PMID = 0, decimal AID = 0.00M, decimal TID =0.00M, string TyID = null, string NID = null, decimal AmID = 0.00M, decimal PID = 0.00M, string TNID = null, string INID = null, DateTime? DEID = null, decimal IBID = 0.00M, decimal PBID = 0.00M, DateTime? LMDID = null)
    {
        tblDenialReport tbldenialreport = db.tblDenialReport.Find(PVID, PMID, AID, TID, TyID, NID, AmID, PID, TNID, INID, DEID, IBID, PBID, LMDID);
        if (tbldenialreport == null)
        {
            return HttpNotFound();

        }
        return View(tbldenialreport);
    }

お手伝いありがとう

4

2 に答える 2

1

主キーまたは複合キーのいずれかをパラメーターとして に渡す必要がありますDbSet<TEntity>.Find Method。ここでは間違っています。

tblDenialReport tbldenialreport = db.tblDenialReport.Find(PVID, PMID, AID, TID, TyID, NID, AmID, PID, TNID, INID, DEID, IBID, PBID, LMDID);
  • DbSet<TEntity>.Find Method主キー値を使用して、コンテキストによって追跡されるエンティティを見つけようとします。
  • エンティティがコンテキスト内にない場合、クエリが実行され、データ ソース内のデータに対して評価されます。コンテキスト内またはデータ ソース内にエンティティが見つからない場合は、null が返されます。
  • Find は、コンテキストに追加されたがまだデータベースに保存されていないエンティティも返すことに注意してください。

上記のパラメーターを使用して tblDenialReport を検索する場合は、次のように実行できます。

public ActionResult Details(int PVID = 0, int PMID = 0, decimal AID = 0.00M, decimal TID =0.00M, string TyID = null, string NID = null, decimal AmID = 0.00M, decimal PID = 0.00M, string TNID = null, string INID = null, DateTime? DEID = null, decimal IBID = 0.00M, decimal PBID = 0.00M, DateTime? LMDID = null)
    {
        tblDenialReport tbldenialreport = db.tblDenialReport.SingleOrDefault(r=>

             r.PVID == PVID &&  r.PMID == PMID && r.AID == AID &&
             r.TID ==TID && r.TyID == TyID && r.NID == NID && r.AmID == AmID && 
             r.PID == PID && r.TNID == TNID && r.INID == INID && r.DEID == DEID &&
             r.IBID == IBID && r.PBID == PBID && r.LMDID == LMDID);

        if (tbldenialreport == null)
        {
            return HttpNotFound();

        }
        return View(tbldenialreport);
    }

ただし、関数名で tblDenialReport の一意のキーのみを渡し、次のようにすることを強くお勧めします。

public ActionResult Details(int tblDenailReportId)
    {
        tblDenialReport tbldenialreport = db.tblDenialReport.Find(tblDenailReportId);

        if (tbldenialreport == null)
        {
            return HttpNotFound();

        }
        return View(tbldenialreport);
    }
于 2013-06-18T14:42:36.327 に答える
-1

エラーメッセージに基づいて、エラーはdb.tblDenialReport.Find(...)整数を期待しているが、文字列と小数も渡していることが原因であると推測します。

于 2013-06-18T14:42:17.253 に答える