2010-09-13 5 views
53

Für ein neues Projekt versuche ich zuerst meine Business-Klassen zu erstellen und später die realen Datenbanktabellen zu erstellen. Daher verwende ich den Entity Framework 4 Designer. A hat eine neue Datei "ADO.Net Entity Data Model" mit der Erweiterung .edmx erstellt.Wie stelle ich eine Verknüpfung zwischen zwei Objekten im Entity Framework 4 Entity Designer richtig ein?

Ich habe zwei Entitäten:
alt text

Ich möchte eine 1 nc Beziehung zwischen Produkt hinzufügen -> Group. Wenn ich zuerst die MSSQL-Datenbank erstellt hätte, hätte ich dem Table Product eine Spalten-IDGroup hinzugefügt und Group.IDGroup auf Product.IDGroup verwiesen. Soweit ich sehen kann, kann ich nicht solche Vereinigung im Designer hinzufügen, wenn ich eine neue Eigenschaft namens IDGroup zum Artikel Entity hinzufügen

Dies ist, wie ich die Zuordnung hinzufügen: alt text

was dazu führt, :
alt text

Jetzt das Teil, was diese Frage ist: Wenn ich zwei Tabellen aus einer vorhandenen MSSQL-Datenbank in die edmx Datei hinzufügen, werde ich den Compiler-Fehler erhalten:

Error 3027: No mapping specified for the following EntitySet/AssociationSet - GroupSet, ProductSet 

Was bedeutet dieser Fehler und was muss ich tun, um das Problem zu beheben? Wenn ich diese zwei Tabellen löschen, werde ich eine Warnung stattdessen erhalten:

Error 2062: No mapping specified for instances of the EntitySet and AssociationSet in the EntityContainer myContainer. 

Etwas sagt mir, ich mache das alles falsch und das ist nur grundlegende Dinge. Wie kann ich es richtig machen?

+1

+1 Danke, dass Sie diese Frage gestellt haben, ich vergesse routinemäßig, dies zu tun. –

Antwort

85

Ich lief gerade in diese selbst &, als ich es googelte (ich traf Ihre Frage).

Ich konnte auf die Linie (Assoziationslinie) im Designer doppelklicken. Füllen Sie die Eigenschaften dort aus und ich habe es funktioniert.

Ich hatte auch VS und wieder zu öffnen, um es zu bekommen einige der gemeldeten Fehler gehen weg ...

Kann nicht sagen, dass dies die richtige Antwort zu schließen - nur herumzuzufummeln und scheinbar bekommen Ergebnisse .

+2

Vielen Dank! Ich ging durch Eigenschaften und Mapping und erstellte den Link auf verschiedene Arten, aber egal was ich tat, konnte ich den Fehler nicht weggehen. Ich habe nie daran gedacht, auf den Link zu doppelklicken. – Rachel

+4

Ich hatte auf die Verknüpfung doppelgeklickt und die referenzielle Einschränkung festgelegt - aber der Fehler blieb. Das Neustarten des VS 2010 und das erneute Festlegen der referenziellen Einschränkung haben den Zweck erfüllt. – Jesslyn

+4

Schöne Antwort. Ich war überrascht zu sehen, dass ich VS schließen und wieder öffnen musste, um es funktionieren zu lassen, selbst nachdem ich alles andere richtig gemacht hatte. Entity Framework ist genial, außer wenn es nicht ist! –

3

Ich hatte den gleichen Fehler, und ein Bit der Konfiguration, die der "Add Association" -Dialog hat mir nicht geholfen, war die "Referential Constraint" -Eigenschaft. Sobald ich konfiguriert habe, dass ich die Lösung neu aufgebaut und alles war cool.

6

Ich habe diesen Fehler, wenn ich das Modell aus der Datenbank mit dem ADO.Net DBContext Generator unter VS2010 SP1 mit EF4.1 installiert generiert. Die Datenbank, die ich verwendete, hatte KEINE referentielle Integrität zwischen den primären und fremden Schlüsselfeldern.

Die Lösung bestand darin, auf die Zuordnungszeile doppelzuklicken, die das Dialogfeld Referential Constrainst öffnet. Ich legte dann das Principal-Feld als die Tabelle mit dem Primärschlüssel, die Dependent als die Tabelle mit dem Fremdschlüssel fest, legte die Fremdschlüsselnamen für die Übereinstimmung in der Dropdownliste fest und klickte auf OK.

Der Code dann kompiliert und ich konnte über die Entitäten mit var Fremd = DBContext.Primary.First() arbeiten.Foreign etc

Steve

9

Etwas, das einfach sein könnte zu verpassen ist generieren DataBase vom Modell. Von dem, was ich verstehe, muss dies nach jeder Änderung an der Datenbank .edmx ausgeführt werden.

Diese einfachen Fehler mir passiert ist und für ein paar Minuten zu Frustration führen =)

0

ich diesen Fehler hatte, wenn ich eine Verbindung aus dem Modelldiagramm gelöscht habe, aber der Verein bleibt in dem zugrunde liegenden XML-in die .edmx. Das einzige, was ich gefunden habe, um das zu beheben, ist, edmx manuell zu editieren, um Verweise auf die anstößige Assoziation zu entfernen.

0

Sie müssen nur alle Ihre Tabellen aus der EDMX-Datei löschen. Klicken Sie nun mit der rechten Maustaste in die edmx-Datei und wählen Sie update form database option. Update Ef, Problem wird gelöst.

0

Ich benutze Datenbank ersten Ansatz und stieß auf das gleiche Problem.

was war verursacht das Problem ist auf meiner Kollegin gelöscht eine der Tabelle aus der Datenbank und vergessen, das Modell zu aktualisieren.

Meine Lösung ist die gelöschte Entität aus dem Diagramm zu finden. (Der Modellbrowser könnte nützlich sein.) Löschen Sie ihn dann aus dem Diagramm, da EF die Entitäten nicht löscht, wenn Sie die Tabelle aus der Datenbank gelöscht haben.

Erstellen und überprüfen Sie das Fehlerlistenfenster (Strg + E, W).

Fertig.

0

Ich habe auch festgestellt, dass die Neuerstellung Ihres Projekts nach Änderungen an Ihrem Entity Framework-Kontext und Modellen diese Fehler manchmal beheben kann, insbesondere wenn sich die Entity Framework-Kontexte in einem anderen Projekt befinden.

Verwandte Themen