2

ich die Fehler wie oben Tag bekommen, die am Ort derdie Argumenttypen ‚Edm.String‘ und ‚Edm.Int32‘ unvereinbar ist für diesen Vorgang

return View (st.employees sein werden. Finden (id));

nur über Ort, kann mir jemand dabei helfen! und mein Code

 namespace StartApp.Controllers 
    { 
public class EmployController : Controller 
{ 
    StartEntities st = new StartEntities(); 
    //List 
    public ActionResult List() 
    { 
     return View(st.employees.ToList()); 
    } 
    //Details 
    public ActionResult Details(int id = 0) 
    { 
     return View(st.employees.Find(id)); 
    } 
    //Create 
    public ActionResult Create() 
    { 
     return View(); 
    } 


    [HttpPost,ValidateAntiForgeryToken] 
    public ActionResult Create(employee e) 
    { 
     using(st) 
     { 
      st.employees.Add(e); 
      try 
      { 
       st.SaveChanges(); 
      } 
      catch 
      { 
       System.Diagnostics.Debug.WriteLine("Here is an error"); 
      } 
     } 
     return RedirectToAction("List"); 
    } 
    //edit 
    public ActionResult Edit(int id = 0) 
    { 

      return View(st.employees.Find(id)); 

    } 

    [HttpPost,ValidateAntiForgeryToken] 
    public ActionResult Edit(employee e) 
    { 
     st.Entry(e).State = EntityState.Modified; 
     st.SaveChanges(); 
     return RedirectToAction("List"); 
    } 
    //Delete 
    public ActionResult Delete(int id = 0) 
    { 
     return View(st.employees.Find(id)); 
    } 
    [HttpPost,ActionName("Delete")] 
    public ActionResult Delete_conf(int id) 
    { 
     employee emp = st.employees.Find(id); 
      st.employees.Remove(emp); 
      st.SaveChanges(); 
      return RedirectToAction("List"); 
    } 

} 

}

kann jemand mir helfen, diesen Fehler zu beheben!

+0

Werfen Sie einen Blick auf 'Employee' Einheit. Was ist der Typ seines 'Schlüssels'? –

+0

es ist nur Primärschlüssel –

+0

Was ist der Datentyp des Schlüssels in Ihrer Klasse. (Schauen Sie sich die Eigenschaften des Feldes in edmx oder Ihre Code-Dateien an) –

Antwort

2

Diese Ausnahme tritt normalerweise auf, wenn der Primärschlüssel Ihrer Entitäten vom Typ A ist und Sie eine Variable, die nicht vom Typ A ist, an die Methode Find übergeben.

Vom official documentation von Find Verfahren, kann es die folgenden Ausnahme werfen

InvalidOperationException

ausgelöst, wenn die Typen der Schlüsselwerte nicht mit den Typen der Schlüsselwerte für die Entitätstyp gefunden werden.

Stellen Sie sicher, dass Sie dieselbe Typenvariable verwenden, wenn Sie die Methode Find aufrufen. In Ihrem Code übergeben Sie eine Integer-Variable an die Methode Find. Von dem Fehler glaube ich, dass der Primärschlüssel Ihrer Entitätsklassen nicht Int-Typ ist. Möglicherweise ist es Guid Geben Sie in diesem Fall sicher, dass Sie einen gültigen Guid-Wert an die Find-Methode übergeben.

Sie können die EDMX-Datei öffnen und den Typ Ihres Schlüssels sehen und sicherstellen, dass Sie denselben Typ an die Methode Find übergeben.

Klicken Sie mit der rechten Maustaste auf die Entität in Ihrer edmx-Datei und wählen Sie Eigenschaften.

enter image description here

+0

Vielen Dank für Ihren Vorschlag, ich bin neu bei mvc. Darf ich wissen, was Typ A ist. –

+0

Es kann ein beliebiger Typ sein (zB: Guid). In Ihrem Code übergeben Sie eine int-Variable. Überprüfen Sie Ihre Entity-Klasse in edmx-Datei, um zu sehen, welcher Typ es ist – Shyju

+0

Ja, ich deklariere es nicht als int. Ich werde als varchar (50) deklariert. Nun, welchen Wert ich anstelle von 0 übergeben werde. –

1

es scheint, wie Sie das MVC-Muster folgen.

Ich habe diesen Fehler auch und es ist, weil ich den ID-Parameter als Integer statt "String" übergeben wurde, wie ich in meinem Modell erklärt.

Probe:

public class Object 
{ 
    public string id { get; set; } 
    public string property1{ get; set; } 
    public string property2{ get; set; } 
    public string property3{ get; set; } 
} 
Verwandte Themen