Aktualisieren des Datenbankschemas in Entity Framework

8

Ich habe VS SP1 installiert und mit Entity Framework herumgespielt.

Ich habe ein Schema aus einer vorhandenen Datenbank erstellt und einige grundlegende Operationen versucht.

Das meiste ist gut gelaufen, außer der Aktualisierung des Datenbankschemas.

Ich habe die Datenbank grundlegend geändert:

  • hat eine neue Tabelle hinzugefügt
  • hat eine Tabelle gelöscht
  • hat eine neue Spalte zu einer bestehenden Tabelle hinzugefügt
  • löschte eine Spalte aus einer vorhandenen Tabelle
  • hat den Typ einer vorhandenen Spalte
  • geändert

Die ersten drei sind gut gelaufen, aber die Änderung des Typs und die Löschung der Spalte folgte nicht den Änderungen der Datenbank.

Gibt es eine Möglichkeit, vom Designer zu arbeiten? Oder wird es im Moment nicht unterstützt? Ich habe noch kein verwandtes Material gefunden, aber immer noch gesucht.

    
Biri 15.08.2008, 11:15
quelle

7 Antworten

6

Ich würde vermuten, dass das möglicherweise nicht passiert, weil sie den Build für vorhandenen Code unterbrechen würden, aber das ist nur eine Vermutung meinerseits.

Hier ist meine Logik:

Zuerst sollte EF mehr als 1: 1 Tabellenzuordnung sein, daher ist es durchaus möglich, dass, nur weil Sie eine Spalte aus Tabelle A löschen, nicht bedeutet, dass es für diese Entität keine Eigenschaft Beschreibung geben sollte . Sie können diese Eigenschaft nur einer anderen Tabelle zuordnen.

Zweitens könnte das Ändern eines Builds Builds zerstören. Das ist der einzige Grund dafür.

    
Darren Kopp 15.08.2008, 16:18
quelle
5

Ich habe festgestellt, dass es im Allgemeinen immer noch einige Bugs mit der Funktion "Update Model from Database" gibt.

Schlüssel sind der Mörder für mich - ich habe noch irgendwelche Änderungen, die ich an einer Fremdschlüsselbeziehung mache, oder einen Primärschlüssel zu einer Tabelle hinzuzufügen und den Updater richtig arbeiten zu lassen (dadurch wird es einen Kompilierungsfehler geben) auf den generierten Code) - aber um das Problem zu lösen, ist es eine einfache Sache, das Modell zu löschen und wieder zu importieren (dauert nur eine Minute) - das ist natürlich weniger als ideal, aber ich hatte noch nie einen Fehler von einem 'frischen' importieren.

    
scotta 24.09.2008 18:34
quelle
1

Von den Demos des Designers, die ich gesehen habe, ist es kein makelloses Werkzeug. Es ist ein Produkt der Version 1.0, also muss es einige Schwachstellen haben. Der Änderungstyp ist einer von ihnen scheint es. Beim Betrachten des Designers und der Codegenerierung dachte ich, dass man entweder zur Kompilierungszeit (nicht wahrscheinlich) oder zur Laufzeit (wenn das Modell tatsächlich ausgeführt wird) brechen würde.

    
Chris Patterson 19.08.2008 03:55
quelle
0

Sie müssen die Spalte selbst aus dem Designer oder der XML-Datei löschen.

    
vintana 17.09.2008 07:40
quelle
0

Wie bereits erwähnt, können Sie die Spalte einfach vom Designer löschen. So ändern Sie den Datentyp der Spalte: Aktualisieren Sie das Modell nur aus der Datenbank, gehen Sie dann zu den Tabellenzuordnungen und wählen Sie die Spalte aus, die Sie in der Datenbank geändert haben. Die Werte auf der rechten Seite stellen Ihr Modell dar, seltsamerweise wird dies nicht automatisch aktualisiert, sondern wählen Sie einfach die Spalte rechts und gehen Sie zu Eigenschaften und ändern Sie den Datentyp dort. Es sollte ein Dropdown-Menü werden.

Prost.

Ruddy

    
Ruddy 03.08.2009 23:41
quelle
0

Ich habe eine ähnliche Anwendung wie Ihre Anfrage erstellt. Aber meine Lösung war zu schwer. Ich werde versuchen zu erzählen;

  1. Sie müssen Ihre eigenen Datenbank-Management-Klassen erstellen und diese Objekte sind verantwortlich für create, update-Datenbankschema (ich habe das manuell erstellt).

  2. Ich habe einen guten Artikel und Quellcode auf ADO.NET Team Blog können Sie EDMTools auch von diesem Blog herunterladen, es Open Source. Und Sie können daraus auch Modellgenerierungs- und Aktualisierungsroutinen in Ihr Projekt implementieren.

  3. Wenn Sie Ihr Schema zuletzt geändert haben, sollten Sie Ihr Modell neu erstellen und binden und die Datenassemblierung zur Laufzeit neu erstellen. Aber Sie müssen am wichtigsten denken, sollten Sie Ihre Datenmodell Assembly mit Ihrem Projekt mit lose gekoppelt (siehe Beitrag )

    Andernfalls sollten Sie auf die Veröffentlichung von EF 4.0 warten (es ist jetzt CTP 1), sie haben angekündigt, dass sie Datenbank-Script-Funktionen erstellen, löschen und aktualisieren werden.

Gutes Schloss

    
fyasar 09.10.2009 21:00
quelle
0

Die Art und Weise, wie ich dies tue (und ich mache all die Dinge, die Sie erwähnen, sowie das Umbenennen von Spalten), besteht darin, Änderungen an der Datenbank vorzunehmen und den EF-Code mit EF Code First zu regenerieren.

Ich manipuliere mich nicht an den EF-Code First-Klassen für das Gute oder das Schlechte (einschließlich unsinnig benannter Spalten für Relationen), um den Prozess zu erleichtern.

Kein Designer oder ORM-Schemagenerator kann Änderungen an Ihrer Produktionsdatenbank vornehmen, wenn darin Daten eingeschränkt sind. Aus diesem Grund sollten Sie immer mit der Überprüfung beginnen, ob Ihre Änderungen an der Datenbank durchführbar sind. Probieren Sie sie in einer Entwicklungsdatenbank aus und passen Sie dann Ihren Code an die Änderungen an.

    
Konrad Brodzik 13.02.2013 14:03
quelle

Tags und Links