it-swarm.com.de

weil es ein DefiningQuery-Element und kein <InsertFunction> -Element im <ModificationFunctionMapping> -Element enthält

Ich verwende EF in meiner Anwendung.

Ich versuche, einen neuen Datensatz in eine Zuordnungstabelle zu speichern

und erhalte den folgenden Fehler:

Unable to update the EntitySet 'UsersLimitationToCountry' because it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element to support the current operation.

Soll ich es in der edmx selbst definieren? Wie?

49
Elad Benda

In meiner Many-to-Many-Zuordnungstabelle fehlte PK

hinzugefügt, und das Problem ist gelöst.

87
Elad Benda

Mit der akzeptierten Antwort einverstanden . Nur den Grund dafür angeben ...

Wenn das EF-Mapping mit einer Tabelle durchgeführt wird, die keinen Primärschlüssel hat, wird es als Ansicht betrachtet, und Ansichten sind logisch.

Fügen Sie also entweder den fehlenden Primärschlüssel in Ihre Tabellen ein oder betrachten Sie sie als Ansicht und führen Sie keine Aktualisierungsvorgänge aus. 

37
Biki

Wenn Ihre Ansicht aktualisierbar ist, können Sie einfach die .__ entfernen. Element aus der EntitySet-Definition für Ihre Ansicht in der StorageModel-Abschnitt Ihrer .edmx und die normale Update-Verarbeitung funktioniert wie jeder andere Tisch.

Das ist bei mir der Fall. Das einfache Entfernen führte zu einem anderen Fehler. Ich habe die Schritte dieses Beitrags mit Ausnahme des letzten verfolgt. Zu Ihrer Bequemlichkeit kopierte ich die 4 Schritte aus dem Beitrag, den ich befolgte, um das Problem wie folgt zu lösen:

  1. Klicken Sie mit der rechten Maustaste auf die edmx-Datei und wählen Sie Öffnen mit XML-Editor 
  2. Suchen Sie die Entität im edmx: StorageModels-Element
  3. Entfernen Sie die DefiningQuery vollständig 
  4. Benennen Sie den Store um: Schema = "dbo" in Schema = "dbo" (andernfalls generiert der Code einen Fehler, der besagt, dass der Name ungültig ist). 
22
kavitha Reddy

Ich bin auf dieses Problem in einer aktualisierbaren Ansicht gestoßen. Ich habe diesen Artikel mein Problem gelöst. 

In der zugrunde liegenden Tabelle meiner Ansicht ist der Primärschlüssel definiert. EF weiß jedoch nicht, welche Spalten sich in der PK befinden, da die Entität in der Ansicht erstellt wurde. Der Trick besteht darin, EF zu überzeugen, dass Ihre Ansicht als Tabelle aktualisiert werden kann. Schritte sind fast die gleichen wie in den obigen Antworten erwähnt:

  1. Klicken Sie mit der rechten Maustaste auf die edmx-Datei und wählen Sie Öffnen mit XML-Editor
  2. Suchen Sie die Entität im edmx: StorageModels-Element
  3. Entfernen Sie den Abschnitt <DefiningQuery> vollständig
  4. Benennen Sie den Store um: Schema = "Dbo" in Schema = "Dbo"
  5. store:Type="Views" IN store:Type="Tables" ändern
4
wctiger
  1. Klicken Sie mit der rechten Maustaste auf die edmx-Datei und wählen Sie Öffnen mit XML-Editor

  2. Suchen Sie die Entität im edmx: StorageModels-Element

  3. Entfernen Sie die DefiningQuery vollständig

  4. Benennen Sie store:Schema="dbo" in Schema="dbo" um (andernfalls generiert der Code einen Fehler, der besagt, dass der Name ungültig ist) Diese Schritte funktionierten für mich

4
user3452580

Mein Tisch hatte keinen Primärschlüssel im SQL-Tabellendesign. Hinzugefügt und gelöst.

2
Rajdeep

** Erneut überprüfen, ob Ihre Tabellen nicht über PK verfügen: ** Fügen Sie einfach Primärschlüssel hinzu, entfernen Sie die Tabelle und fügen Sie sie erneut in edmx hinzu

2
Moji

Stellen Sie sicher, dass Ihre Fremdschlüsseltabellen nicht mehr als einen Spaltennamen haben, der mit den Spalten in Ihrer referenzierenden Tabelle übereinstimmt. Nur der Primärschlüssel sollte zwischen Ihrer Ref-Tabelle mit der referenzierten Tabelle übereinstimmen. 0..1 sollte den Spaltennamen unterschieden und eine Namenskonvention für Ihre Spalten entwickeln, die sicherstellt, dass verweisende und referierte Tabellen nicht mehr als einen übereinstimmenden Spaltennamen haben. Mit freundlicher Genehmigung von ALMwConsult.net

1
Duncan Kuffar

Wenn Sie keinen Primärschlüssel in Ihrer Tabelle behandeln, wird dieses Problem Definitiv in MVC auftreten, während Sie die Datensatzdatenbank aktualisieren und einfügen

DbUpdate-Ausnahme wurde vom Benutzer nicht behandelt

1
bajran

Arbeiten an db first mvc-anwendung. Das Problem war, dass ich vergessen habe, den Primärschlüssel für die Tabelle zu definieren. Gelöst durch Hinzufügen des Primärschlüssels mit dem Befehl alter und Aktualisieren der DAL (edmx)

0
Hafte Nigus