2009-04-27 4 views
3

Ich habe einen ziemlich großen DB an mein Entity Framework angeschlossen. Ich habe einen bestimmten Satz von Tabellen, wo ein gemeinsamer Schlüssel (fk) aus dem Design gelöscht wurde. Wenn ich das Modell aus der Datenbank aktualisiere, bekomme ich eine Reihe von Fehlern über diesen jetzt fehlenden Schlüssel.Entity Framework: Regenerierung geänderter Tabellen (Schlüsseländerungen)

Warum erkennt der Aktualisierungsprozess nicht genau, dass dieser Schlüssel entfernt wurde? Wenn ich die Eigenschaft manuell aus dem Modell entferne, störe ich einfach mit anderen Fehlern. Ich habe auch versucht, die Tabelle einfach zu löschen und neu hinzuzufügen, aber jetzt wird die Tabelle nicht im Abschnitt "Hinzufügen" des Update-Assistenten angezeigt.

Also, kurz vor dem Löschen der gesamten Sache und neu beginnen, gibt es eine Möglichkeit, sich wieder zu erholen? Hat das EF-Team neue Versionen dieses Assistenten veröffentlicht, in denen einige dieser Probleme bereits behoben sind?

Antwort

5

Entity Framework wird von Zeit zu Zeit verwirrt. Was Sie tun müssen, ist die Entity-Tabelle aus dem Modell zu löschen, dann die Tabelle in SQL Server zu TableName_Temp umzubenennen, das Modell zu aktualisieren, jetzt sollte die Entity-Tabelle in Ordnung sein, löschen Sie die Entitätstabelle erneut, benennen Sie sie wieder in den ursprünglichen Namen und Aktualisieren Sie das Modell erneut. Diesmal sollte alles in Ordnung sein.

Ich weiß, dass dies ein versautes Verfahren ist, aber das ist die einzige Möglichkeit, dieses Problem zu beheben, ohne die gesamte edmx wegzublasen und von vorne anzufangen. Gegenwärtig habe ich in meiner Organisation die Regel, keine Änderungen am EDMX vorzunehmen, es sei denn, dies ist absolut notwendig, so dass wir löschen und neu erstellen können, wann immer es ohne Probleme benötigt wird.

Hoffe, das hilft!

+0

Ist das nicht ein trauriger Kommentar zum Regenerationsprozess? Die Regel in der Firma ist, edmx Änderung einfach nicht zu erlauben? MS sollte diesen Schmerzpunkt für Menschen wirklich ansprechen. –

+0

Ich glaube, dass sie die meisten Probleme mit LINQ to SQL und LINQ to Entities in der Version 4.0 adressieren. Sie bieten sogar einen Modus, in dem Sie nicht einmal eine EDMX-Datei benötigen. Ich bin mir nicht sicher, wie voll dieser Modus ist, aber es könnte für eine sauberere Implementierung sorgen als NHibernate, wenn Sie das Fluent-Mapping nicht verwenden. – Lukasz

Verwandte Themen