Warum erhalte ich die Fehlermeldung "Kann EntitySet nicht aktualisiert werden, weil es eine DefiningQuery ..." Ausnahme hat, wenn versucht wird, ein Modell in Entity Framework zu aktualisieren?
Während der Aktualisierung mit Hilfe von LINQ to SQL mit Entity Framework, wird eine Ausnahme geworfen.
System.Data.UpdateException: Unable to update the EntitySet 't_emp' because it has
a DefiningQuery and no <UpdateFunction> element exists in the
<ModificationFunctionMapping>
Den code für das update ist :
public void Updateall()
{
try
{
var tb = (from p in _te.t_emp
where p.id == "1"
select p).FirstOrDefault();
tb.ename = "jack";
_te.ApplyPropertyChanges(tb.EntityKey.EntitySetName, tb);
_te.SaveChanges(true);
}
catch(Exception e)
{
}
}
Warum bin ich immer diese Fehlermeldung?
InformationsquelleAutor der Frage Thomas Mathew | 2011-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
War das problem in der Tabellenstruktur. Um den Fehler zu vermeiden, die wir haben, um eine primäre Schlüssel in der Tabelle. Danach aktualisieren Sie die edmx. Das problem wird behoben
InformationsquelleAutor der Antwort Thomas Mathew
Drei Dinge:
Nicht fangen Ausnahmen, die Sie nicht verarbeiten können. Sie fangen jede Ausnahme möglich, und dann nichts zu tun (außer beim schlucken). Das ist eine Schlechte Sache™ Tun, Sie wirklich wollen, um schweigend nichts tun, wenn alles schief geht? Das führt zu beschädigten Zustand ist das schwer zu Debuggen. Nicht gut.
Linq to SQL ist ein ORM, wie Entity Framework. Sie können mithilfe von LINQ to aktualisieren Sie die Objekte, aber Sie sind nicht mit Linq to SQL, bist du mit Entity Framework (Linq to Entities).
Haben Sie versucht, die Lösung die hier aufgeführten? Die Ausnahme, die Sie gepostet hat, ist etwas abgeschnitten, so kann ich nicht sicher sein, es ist genau das gleiche (bitte aktualisieren Sie Ihre post, wenn es gar nicht), und wenn es das gleiche ist, können Sie kommentieren, ob oder nicht die folgenden arbeiten für Sie?
(Quelle: "Mike" auf MSDN)
InformationsquelleAutor der Antwort George Stocker
Aber Sie können den Primärschlüssel Festlegen im Modell, wenn die Verwendung von MVC Asp.net
Nur Modell Öffnen.edmx in der Tabelle ,gehen Sie zu Ihrem Feld-Eigenschaft, und legen
Entity Key = True
InformationsquelleAutor der Antwort porya_ras