Ich habe ein Entity Framework 4-Modell-First-Design. Ich erstelle einen ersten Entwurf meines Modells im Designer und alles war gut. Ich habe eine Datenbank zusammengestellt, generiert usw.
Später habe ich versucht, einer meiner vorhandenen Entitäten einen String-Skalar (Nullable = true) hinzuzufügen, und beim Kompilieren wird immer wieder diese Art von Fehler angezeigt:
Fehler 3004: Problem beim Zuordnen von Fragmenten ab Zeile 569: Für die Eigenschaften MyEntity.MyValue in Set MyEntities wurde keine Zuordnung angegeben. Eine Entität mit Schlüssel (PK) wird nicht umgeleitet, wenn: Entität vom Typ [MyEntities.MyEntity] ist
Ich muss die EDMX-Datei immer wieder manuell öffnen und das XML korrigieren, wenn ich Skalare hinzufüge.
Ideen, was los ist?
quelle
Antworten:
Habe seitdem festgestellt, dass ich nach dem Hinzufügen / Ändern / Löschen von Eigenschaften für meine Entitäten "Datenbank aus Modell generieren" muss, bevor ich kompiliere, da sonst 3004 Zuordnungsfehler auftreten.
quelle
Ich habe gerade die beleidigenden Tabellen aus dem Modell entfernt und sie dann wieder hinzugefügt, und alles war gut.
quelle
public <datatype> MyColumnName1 { get; set; }
(beachten Sie die 1 ), dass im generierten Modell angezeigt wurde.Für diejenigen unter Ihnen, die ein Modell aus einer Datenbank erstellen, trat dieses Problem auf, nachdem ich Änderungen an meiner Datenbank vorgenommen hatte. Es ist passiert, als ich aus dem einen oder anderen Grund einen Feldnamen in der Datenbank geändert habe (ich denke, es passiert auch, wenn Sie einen Datentyp ändern).
Die Lösung bestand für mich darin, mit der rechten Maustaste auf den Arbeitsbereich zu klicken und "Modell aus Datenbank aktualisieren" auszuwählen. Dies sollte die Eigenschaften aus der Datenbank zu Ihrem Modell hinzufügen, entfernt jedoch NICHT Ihre alten Eigenschaften und diese geben Ihnen den 3004-Fehler.
Klicken Sie mit der rechten Maustaste auf den Arbeitsbereich und wählen Sie "Validieren". Dies sollte Ihnen eine Fehlerliste mit den fehlerhaften Eigenschaften geben. Sie können dann mit der rechten Maustaste auf jede fehlerhafte Eigenschaft klicken und sie manuell aus Ihrem Modell löschen.
Dies hat das Problem für mich behoben. Hoffe es hilft jemand anderem.
quelle
Wenn Sie Ihre Datenbank ändern möchten, ohne das gesamte Modell neu zu generieren oder Ihre Datenbank aus dem Modell neu zu erstellen, ist es meiner Meinung nach am einfachsten und sichersten, die Eigenschaften im EDMX-Diagramm über Visual Studio zu ändern und dann die Zuordnungen manuell anzupassen, die Visual Studio nicht bietet Zugriff auf.
Der Fehler gibt Ihnen eine Zeilennummer:
Öffnen Sie einfach die edmx-Datei in einem Texteditor, gehen Sie zu dieser Zeile und es sollte ziemlich offensichtlich sein, was behoben werden muss. Es gibt einen Abschnitt, der so aussehen wird:
<EntityTypeMapping TypeName="YourModel.YourType"> <MappingFragment StoreEntitySet="YourType"> <ScalarProperty Name="PropertyName1" ColumnName="DatabaseColumn1" /> <ScalarProperty Name="PropertyName2" ColumnName="DatabaseColumn2" /> ... </MappingFragment> </EntityTypeMapping>
<EntityType Name="YourTable">
Stellen Sie einfach sicher, dass für jeden benötigten Eigenschafts- / Spaltennamen ein Knoten vorhanden ist und dass alle Eigenschaften auch im Abschnitt oben im edmx-Dokument aufgeführt sindquelle
Wenn alle Ihre Abfragen in gespeicherten Prozeduren geschrieben sind und Sie nur versuchen, das Modell zu füllen, können Sie zu einem komplexen Typ wechseln, der für mich funktioniert hat.
So erstellen Sie einen komplexen Typ:
Ordnen Sie Ihre gespeicherten Prozeduren dem komplexen Typ zu.
Ich hoffe das hilft jemandem.
quelle
Eine andere Alternative, ohne die Tabelle aus dem Diagramm zu entfernen und erneut hinzuzufügen, ist die Verwendung der Option "Tabellenzuordnung".
quelle
Ich habe das gleiche Problem erhalten, nachdem ich eine Eigenschaft in einer meiner Entitäten umbenannt habe.
Ich habe festgestellt, dass die Zuordnung zwischen der Eigenschaft meiner Entität und der entsprechenden Spalte in der Tabelle nicht festgelegt wurde.
Sie können dies mit dem Editor einstellen, indem Sie mit der rechten Maustaste auf die Entität im Modell klicken und "Tabellenzuordnung" auswählen. Stellen Sie sicher, dass die Eigenschaften einer Spalte in der Datenbank zugeordnet sind.
Bearbeiten: Ich musste auch meine tt-Datei erneut ausführen, um die neuen Klassen zu generieren. (Könnte gewesen sein, seit ich es in einem anderen Projekt habe?)
quelle
Nachdem Sie die XML-Datei (edmx) überprüft haben, verschieben Sie das Modell in ein anderes Projekt und stellen Sie fest, dass alles in Ordnung ist. Ich habe beschlossen, Visual Studio zu schließen und zu öffnen und erneut zu kompilieren. Dann verschwindet der Fehler.
quelle