wake-up-neo.com

Aktualisieren Sie Ihre EDMX, um die Änderungen in Ihrer Datenbank zu berücksichtigen (.Net-Linq-zu-Entitäten)

  • Also ich habe meine edmx gemacht. 
  • Dann ändere ich meine Datenbank ein wenig und ändere eine Spalte von NOT NULL in NULL.
  • Ich gehe in mein edmx, mache einen Rechtsklick und wähle "Update Model from Database"

Jetzt gehe ich in mein Programm und es wurde nicht aktualisiert ... Ich kann keine Null in die Spalte einfügen. Was muss ich tun, um den edmx richtig zu aktualisieren? Vielen Dank.

43

Die Auswahl des Aktualisierungsmodells aus der Datenbank ist die beste Methode zum Aktualisieren Ihres EDMX. Es gibt bestimmte Eigenschaften, die auf der konzeptionellen Ebene nicht aktualisiert werden. 

Stellen Sie sicher, dass Ihre Store-Ebene aktualisiert wurde, indem Sie sie in der Model Viewer-Toolbox anzeigen. Wenn der Store ordnungsgemäß aktualisiert wurde, sind Sie in Ordnung und Ihre Datenbank wird synchronisiert. Wenn ja, gehen Sie in den visuellen Designer, klicken Sie auf das Feld, wechseln Sie zu Eigenschaften und aktualisieren Sie die NotNull-Eigenschaft auf der konzeptionellen Seite.

14
bendewey

Update/Löschen aus dem EDMX ist nicht immer funktionsfähig. Wenn das Modell beim Klicken auf "Modell aus Datenbank aktualisieren" nicht aktualisiert wird, sagen Sie nach dem Aktualisieren einer Ansicht/Tabelle in der Datenbank Folgendes aus:

1) Löschen Sie die Ansicht/Tabelle aus dem Modelldiagramm
2) Wechseln Sie zur EDMX-Ansicht in die XML-Ansicht (klicken Sie mit der rechten Maustaste auf die EDMX-Datei und wählen Sie "Öffnen mit").
3) Suchen und löschen Sie die XML-Entitätselemente
4) Wechseln Sie wieder zur EDMX-Ansicht
5) Klicken Sie auf Modell aus Datenbank aktualisieren 

Dies sollte jede Art von Änderung widerspiegeln, die Sie an der Datenbank Ihres EDMX vorgenommen haben. Es ist umständlich, funktioniert aber einwandfrei.

In einer idealen Welt würde ich erwarten, dass das Update Model from Database die Änderungen von DB zu EDMX synchronisiert. Meistens funktioniert es jedoch nicht.

81
pencilslate

Was ich erfolgreich gemacht habe, ist dies (VB.Net).

  1. aktualisieren Sie die Datenbank wie gewünscht/erforderlich
  2. Wählen Sie im EDMX-Modell "Update from database" aus. Das grafische Modell zeigt die neue Struktur/Tabellen korrekt an
  3. Erweitern Sie das Projekt, sodass alle zugehörigen Dateien angezeigt werden
  4. Die beiden Dateien mit der Erweiterung "tt" sind die, die wichtig sind: Nehmen Sie zuerst die Datei OHNE den .Context. vor der tt-Erweiterung. Klicken Sie mit der rechten Maustaste darauf und wählen Sie Benutzerdefiniertes Tool ausführen:

 run custom tool

  1. Machen Sie dasselbe für die .tt-Datei mit dem .Context. in seinem Namen. Alle Ihre Code- und logischen Modellklassen werden aktualisiert.
19
Peter Klein

Ja, meistens funktioniert es nicht: - /

Die "beste Methode" (weil sie systematisch funktioniert) besteht darin, die EDMX-Datei zu löschen und erneut zu generieren . Vergessen Sie jedoch nicht, die Verbindungszeichenfolge in App.config zu entfernen (andernfalls fügt der VS2008-Assistent dem Standard ein Suffix hinzu Entitätsname) und leeren den Cache.

Ich hoffe, dass diese Tools in einer nächsten Version besser funktionieren werden, da sie die Produktivität drastisch verringern.

5
littlesteps

DIESER IS DER SCHNELLSTE EINFACHSTE WEG:

  1. Löschen Sie die Ansicht/Tabelle aus dem EDMX-Diagramm.
  2. Verwenden Sie JETZT das Update-Modell aus der Datenbank, um die Tabelle wieder hinzuzufügen.
4
stackPusher

1.Bauen Sie das Projekt nach der Aktualisierung der EDMX-Datei auf.

2.Klicken Sie im Lösungs-Explorer mit der rechten Maustaste auf Ihre .tt-Datei.

3.Wählen Sie die Option "Benutzerdefiniertes Tool ausführen".

Dadurch wird die .tt-Datei aktualisiert.

Quelle: hier !

4
jagad89

Diese Antwort ist besser: https://stackoverflow.com/a/23886016/1014884

Jede manuelle Bearbeitung ist reif für Fehler oder geht verloren, wenn jemand ein Werkzeug wie den Assistenten verwendet. Das Löschen und Aktualisieren mit dem Assistenten ist viel besser. 

2
BillDarcy

Öffnen Sie die edmx-Datei im XML-Editor des VS und prüfen Sie, ob beim Versuch des Updates Fehler aufgetreten sind. 

  <!--Errors Found During Generation:
      warning 6013: The table/view 'foo.dbo.snafu' does not have a primary key   
      defined and no valid primary key could be inferred. This table/view has  
      been excluded. To use the entity you will need to review your schema,  
      add the correct keys and uncomment it.

  <EntityType Name="snafu">
    <Property Name="snafu_column" Type="smallint" />
  </EntityType>-->

Im obigen Fall ... Durch das Hinzufügen eines Primärschlüssels zu der betreffenden Tabelle funktionierte das "Update Model from Database".

2
w4ik

Es aktualisiert beispielsweise nicht die maximale Länge für Zeichenfolgenattribute!

Wenn Sie mit TFS arbeiten, ist es nicht gut, die Datei zu löschen. Sie möchten den Verlauf beibehalten und andere nicht beeinflussen.

Für mich funktioniert es mit einem winzigen separaten Projekt, mit dem ich die EDMX-Datei vollständig neu erstellen kann. Ich öffne sie in XML, kopiere Einfügen in das vorhandene und verschiebe eine Form im Modell, damit VS die CS-Datei neu erstellt . Voila, es ist jetzt aktualisiert.

1
mape1082

Eine in der Datenbank erstellte Ansicht wurde nicht im Designer angezeigt (nachdem "Modell aus Datenbank aktualisieren ..." ausgewählt und ein Häkchen neben dem Namen der Ansicht hinzugefügt wurde). Ich habe keine Fehlermeldung erhalten, bis ich EDMX in XML-Ansicht umgestellt habe: 

  • Klicken Sie mit der rechten Maustaste auf die EDMX-Datei 
  • Wählen Sie "Öffnen mit ..." 
  • Wählen Sie "Automatische Editorauswahl (XML)" aus. 
  • Klicken Sie auf Suchen und suchen Sie nach dem Namen Ihrer Ansicht

In der XML-Datei von edmx fand ich: 

"Fehler beim Generieren gefunden: Warnung 6013: Für die Tabelle/Sicht '(Sicht Name)' ist kein Primärschlüssel definiert, und es wurde kein gültiger Primärschlüssel Abgeleitet. Diese Tabelle/Sicht wurde ausgeschlossen Verwenden Sie die Entität Sie müssen Ihr Schema überprüfen, die richtigen Schlüssel hinzufügen und das Kommentarzeichen entfernen. "

Ich habe die Ansicht geändert, um einen Primärschlüssel zu haben. Dann öffnete ich den edmx-Designer und führte "Update model from database ..." aus. Die Ansicht erschien dann erwartungsgemäß fehlerfrei im Designer.

1
DeveloperDan

Das Entfernen aller Tabellen aus der Designer-Ansicht und das Aktualisieren danach funktioniert für mich

0
alexey