Ich mache einen "Online ATM" für eine Zuordnung mit MVC.Net Framework und Entity Framework. Das Problem, das ich habe, ist wie folgt: Eine der Funktionen meines Systems ist es, Benutzern zu erlauben, eine Überweisung von einem Konto zu einem anderen zu machen. Im Folgenden finden Sie die Post-Methode für diese Aktion:System.ArgumentException beim Versuch, einen Datensatz zu finden
[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");
}
}
Diese Methode führt den TransferAmount und AccTransfer (das Konto zu übertragen), sowie die Konto-ID und Benutzer-ID des Benutzers von der Überweisung, die ist wird vom zugehörigen View-Modell übergeben. Das Problem scheint in dieser Codezeile zu sein:
AtmAccount trans = ctx.AtmAccounts.Find(AccTransfer);
An dieser Stelle ich eine System.ArgumentException Lesung bekommen „Die Art der einen der Primärschlüsselwerte haben den Typ in der Einheit definiert nicht überein See. innere Ausnahme für Details. " Ich kann nicht für das Leben von mir, herauszufinden, wie man dieses Problem umgehen kann.
UPDATE ZUM PROBLEM:
nach der Ausgabe über die Lösung, ich habe jetzt ein Problem, wo die trans Einheit, aus irgendeinem Grunde, nach dem Versuch, null ist AccTransfer in der Tabelle zu finden, die auf jeden Fall vorhanden.
AccTransfer ist eine Zeichenfolge. Es muss ein int wie der vorherige Anruf sein. Versuchen Sie AtmAccount trans = ctx.AtmAccounts.Find (Int32.Parse (AccTransfer)); –
Okay gut, das hat dieses Problem gelöst. Jetzt, aus welchem Grund auch immer, scheint meine "trans" Entität null zu sein, obwohl AccTransfer definitiv in AtmAccounts vorhanden ist. –