Dies liegt an der Art und Weise, wie EF4 mit model-first arbeitet.
Wenn Sie zum ersten Mal ein Modell erstellen, befindet sich die SSDL in einem Zustand, in dem sie nicht vorhanden ist. Sie können Entitäten ziehen, zuordnen usw. Wenn Sie sich die SSDL in der EDMX-Datei ansehen, werden Sie feststellen, dass keiner der Entitäten eine Speichertabelle in der SSDL zugeordnet ist.
Das ändert sich, wenn Sie auf den Generate Database From Model
Kontextmenüpunkt klicken . Der verwirrende Teil ist, dass diese Aktion mehr als nur ein DDL-Skript generiert. Tatsächlich wird die EDMX-Datei so geändert, dass sie SSDL-Informationen enthält. Ab diesem Zeitpunkt wird die EDMX-Datei in einen Status versetzt, in dem jede Entität in der Designer- / CSDL einer Entität in der SSDL zugeordnet werden muss. Wenn keine Zuordnung vorgenommen wird, wird ein Fehler bei der Kompilierung ausgelöst:
Für das folgende EntitySet / AssociationSet - (EntityName) wurde keine Zuordnung angegeben.
Eine weitere interessante Tatsache ist, dass es nicht die Art von Fehler ist, die die Kompilierung verhindert. Es wird tatsächlich die Ausgabeklassenbibliothek generieren. Sollte es nicht eine Warnung sein oder so?
Um diesen Fehler zu vermeiden, müssen Sie nach dem Einfügen einer neuen Entität nur noch Generate Database From Model
einmal tun . Dadurch wird die SSDL aktualisiert und die Zuordnungen korrigiert.
BEARBEITEN
Wenn Sie nicht model-first verwenden und "aus Datenbank aktualisieren", wird dieser Fehler auch angezeigt, wenn Sie eine Tabelle in DB Server gelöscht haben. Dies liegt daran, dass Entity Framework die Entität nicht automatisch für Sie löscht. Löschen Sie die Entität manuell und der Fehler wird behoben.