MVC.Net FrameworkとEntity Frameworkを使用して割り当て用に「オンラインATM」を作成しています。私の問題は次のとおりです。私のシステムの機能の1つは、ユーザーがあるアカウントから別のアカウントに移動できるようにすることです。以下は、このアクションのPostメソッドである:レコードを検索しようとするとSystem.ArgumentExceptionが発生する
[HttpPost]
public ActionResult Transfer(decimal TransferAmount, string AccTransfer, string accId, int id)
{
using (var ctx = new BankDBEntities())
{
AtmAccount acc = ctx.AtmAccounts.Find(id);
if (ctx.AtmAccounts.Any(o => o.AccountNumber.Equals(AccTransfer)))
{
AtmAccount trans = ctx.AtmAccounts.Find(AccTransfer);
if (acc.AccountBalance >= TransferAmount)
{
acc.AccountBalance = acc.AccountBalance - TransferAmount;
trans.AccountBalance = trans.AccountBalance - TransferAmount;
ctx.Entry(acc).State = System.Data.Entity.EntityState.Modified;
ctx.SaveChanges();
ctx.Entry(trans).State = System.Data.Entity.EntityState.Modified;
ctx.SaveChanges();
return RedirectToAction("Index");
}
else
{
return RedirectToAction("Transfer");
}
}
else
{
return RedirectToAction("Transfer");
}
}
この方法はTransferAmountとAccTransfer(に転送するアカウント)を取るだけでなく、ユーザーのアカウントIDとユーザーIDは、からの転送を行う、されています関連するView Modelを渡します。問題は、このコード行にあるように表示されます。
AtmAccount trans = ctx.AtmAccounts.Find(AccTransfer);
この時点で、私は、主キーの値のいずれかのタイプは、エンティティで定義された型と一致しませんでした」System.ArgumentExceptionの読み取りを得るを参照してください。詳細については内部例外を参照してください。私は私の人生のために、この問題を回避する方法を理解することはできません。問題の
UPDATE:
上記の問題を解決した後、私は今、トランスエンティティは、何らかの理由で、間違いなく存在する、テーブルにAccTransferを見つけようとした後にnullの問題を抱えています。
AccTransferを使用することができます文字列です。あなたの前の呼び出しのようなintである必要があります。 AtmAccountを試してみてください。trans = ctx.AtmAccounts.Find(Int32.Parse(AccTransfer)); –
大丈夫、それはその問題を解決しました。今、何らかの理由で、私の "trans"エンティティは、AccTransferがAtmAccountsに確実に存在していても、nullのようです。 –