webentwicklung-frage-antwort-db.com.de

Fehler 3004: Problem beim Zuordnen eines Fragments ab Zeile

Ich habe diesen Fehler, wenn ich meinen Webdienst aufbaue:

Fehler 3004: Problem bei der Zuordnung Fragment ab Zeile 323: Nein für Eigenschaften angegebenes Mapping JE_TRN_HS.JE_HDR_HSJE_HDR_KEY. Entität ist der Typ [TESTCPModel.JE_TRN_HS

Das ist was passiert ist. Ich habe dieses Entitätsdatenmodell aus einer vorhandenen Datenbank erstellt . Ich habe 2 Tabellen hinzugefügt und den Webdienst neu erstellt. Der Build war erfolgreich.

DANN habe ich eine Verbindung zwischen den beiden Tabellen hinzugefügt. Beim Versuch, die Datei neu aufzubauen, ist die Fehlermeldung fehlgeschlagen.

Jetzt ist der Kicker! Ich habe die neu hinzugefügte Association gelöscht und neu aufgebaut. Der Build schlug mit derselben Fehlermeldung fehl !? Die einzige Möglichkeit, diesen Fehler zu beseitigen, besteht darin, die zweite Tabelle zu löschen, die zweite Tabelle neu zu erstellen und erneut hinzuzufügen.

Ich habe ÜBERALL nach der Lösung dieses Problems gesucht! Danke Steve

33
Steve Kershaw

In meinem Fall darf ich keine vorhandenen Tabellen ändern. Ich habe jedoch festgestellt, dass beim Hinzufügen einer neuen Tabelle mit "Fremdschlüsselspalten in das Modell einchecken" in EF4 geprüft wird und die Tabelle keine Fremdschlüsselbeziehungen enthält Assoziation wird es diesen Fehler auslösen.

Definition von Einschränkungen in einem EF4-Modell, die nicht in der Datenbank vorhanden sind


Falls der verknüpfte Artikel verschwindet, lautet die Lösung:

Sie müssen das Eigenschaftenfenster der Zuordnung öffnen und dann auf die Ellipsen für die referenzielle Einschränkung klicken, um zum Dialogfeld für die Einschränkung für die Einschränkung zu gelangen. Wählen Sie dann das richtige Feld für die Einstellung 'Abhängige Eigenschaft' aus.

34
Carlos

In meinem Fall hatte ein anderer Entwickler das Feld aus der Tabelle in der Datenbank gelöscht. Nachdem dies erkannt wurde, löste das Entfernen der Tabelle aus dem Entitätsmodell und das Hinzufügen sie wieder.

21
Graham Laight

Sie können nicht einfach Tabellen aus der Datenbank in Ihr Modell einfügen und dann eine neue Verknüpfung im Modell erstellen. Standardmäßig wird eine unabhängige Zuordnung verwendet, die ihrem Datenbankgegenstück zugeordnet werden muss. Die Relation muss auch in der Datenbank vorhanden sein. Sie müssen Ihre Beziehung als FK-Assoziation modellieren , aber es erlaubt nur Eins-zu-Eins- und Eins-zu-Viele-Assoziationen. Unterschiede zwischen den Zuordnungstypen sind hier beschrieben .

2
Ladislav Mrnka

In meinem Fall hat mein Datenbankadministrator Spaltennamen geändert von Großbuchstaben nach Kleinbuchstaben. Ich habe das Problem gelöst durch erneute Aktualisierung (Aktualisierung des Modells von der Datenbank) für diese Tabelle. Dann vorherige Großbuchstaben löschen.

0

Ich hatte dieses Problem, als ich nach dem Ändern der Verbindungszeichenfolge das 'Update des Modells von der Datenbank' endete. 

Durch Klicken mit der rechten Maustaste auf die Entität und Ein- und Ausschalten eines Schlüssels scheint es zu einer Aktualisierung gekommen zu sein und das Problem wurde behoben. Dies scheint eher ein Fehler im Entity-Framework zu sein.

Es sollte in diesem Fall beachtet werden, dass ich den MySQL-Connector verwendet habe, daher vermute ich, dass er generell ziemlich wählerisch ist.

0
Highstead

Das Aktualisieren des Modells aus der Datenbankoption funktioniert für mich nicht. 

Ich muss also zuerst alle Entitäten löschen, bevor ich das Modell aus der Datenbank aktualisiere, um die Lösung erfolgreich zu beheben.

0
Willy David Jr

Wenn Sie eine Zuordnung auf die Entität angewendet haben, versuchen Sie, diese Spalte aus der Tabelle zu entfernen, um das Problem zu beheben

0
Vidhya A

In meinem Fall hatte ich ein Feld in einer Tabelle umbenannt und einen Primärschlüssel hinzugefügt. Danach habe ich diesen Fehler bekommen. Ich ging zu meiner Liste von Objekten/Modellen und nachdem ich sie gelöscht und aus der Datenbank aktualisiert hatte, hatte ich wieder den gleichen Fehler. Ich habe mehrmals versucht, aber nichts. Die Klasse, die EF generierte, war eine Mischung aus der alten und der neuen Tabellenstruktur.

Nachdem Sie eine Weile nachgeforscht haben, ist dies die Lösung: Gehen Sie zum Diagramm Ihrer Entitäten. Suchen Sie Ihre Tabelle oder öffnen Sie rechts den Modell-Explorer (klicken Sie mit der rechten Maustaste auf das Diagramm - Öffnen Sie den Modell-Explorer). Suchen Sie Ihr Modell/Ihre Tabelle unter ... Modell, ... Modell. Speichern und löschen Sie es. Fügen Sie danach die Tabelle aus der Datenbank erneut hinzu und lösen Sie das Problem.

0
Ramon

Sie können diese Fehlermeldung erhalten, wenn Sie eine Eigenschaft für das Modell haben, die nicht zugeordnet werden kann.

Ich habe zum Beispiel ein paar Linq2Sql in EF6 konvertiert und hatte einen Fehler in einem Binary-Feld. Binär ist ein System.Data.Linq-Typ, aber für EF muss byte[] sein. Das Ändern des Problems wurde behoben.

0
Simon_Weaver

Ich habe diesen Fehler von Linqpad erhalten und konnte nicht herausfinden, warum es plötzlich passiert ist und ob dies ein Problem in meiner Anwendung ist, das den Kontext verwendet. Ich habe auch gerade die Klasse gelöscht, die kürzlich von einer neuen Entität erstellt wurde, und dann habe ich mit der rechten Maustaste auf die .tt-Datei geklickt und auf "Run to Cursor" geklickt, um die Klasse neu zu generieren. Das hat es für mich behoben.

0
spatemp

Ähnliches Problem mit EF 6 erlebt:

exception.InnerException
{"\r\nEntities.EAM.msl(458,10) : error 3004: Problem in mapping fragments starting at line 458:No mapping specified for properties InspectionPdfReportRequest.SyncDate in Set InspectionPdfReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n  Entity is type [Model.Entities.InspectionPdfReportRequest]\r\n\r\nEntities.EAM.msl(488,10) : error 3004: Problem in mapping fragments starting at line 488:No mapping specified for properties InspectionReportRequest.SyncDate in Set InspectionReportRequests.\r\nAn Entity with Key (PK) will not round-trip when:\r\n  Entity is type [Model.Entities.InspectionReportRequest]\r\n"}
    Data: {System.Collections.ListDictionaryInternal}
    HResult: -2146232032
    HelpLink: null
    InnerException: null

Das Problem stellte sich heraus, dass ich die * .edmx-Datei für meine EF-Datenbankanwendung direkt in einem Texteditor geändert hatte, anstatt den Designer zu verwenden. Also haben wir einfach die Textänderungen rückgängig gemacht und sie mit dem Designer angewendet und der Fehler ist verschwunden. Wenn Sie im Designer auf "Speichern" klicken, wurde die zugehörige * .msl-Datei aktualisiert.

0
user8128167