Gibt es drei Möglichkeiten, um das Modell zu synchronisieren.
Löschen die geänderten Tabellen von designer, und ziehen Sie Sie zurück auf die designer-Oberfläche aus dem Datenbank-Explorer. Ich habe festgestellt, dass, damit dies zuverlässig funktioniert, müssen Sie zu:
ein. Aktualisieren des Datenbank-Schemas in der Datenbank-Explorer (Rechtsklick, aktualisieren)
b. Speichern Sie die designer nach dem löschen der Tabellen
c. Speichern Sie wieder nach dem ziehen der Tabellen zurück.
Hinweis aber, dass, wenn Sie geändert haben, alle Eigenschaften (zum Beispiel ausschalten der Kind-Eigenschaft einer association), wird dies natürlich verlieren diese Modifikationen — Sie haben werde, um Sie wiederzusehen.
Verwenden SQLMetal, sich zu regenerieren, von der das schema Ihrer Datenbank. Ich habe gesehen, eine Reihe von blog-posts, die zeigen, dass wie dieses script.
Änderungen direkt im Bereich Eigenschaften der DBML. Dies funktioniert für einfache änderungen, wie zum Beispiel das erlauben null-Werte in einem Feld.
Die DBML-designer nicht installiert standardmäßig in Visual Studio 2015 oder Visual Studio 2017. Schließen Sie VS, starten Sie den VS installer aus und ändern Sie Ihre installation. Die LINQ to SQL-tools ist die Funktion, die Sie installieren müssen.
Ich hatte versucht 1a und 1c 1b ohne und war immer "die Angegebene Umwandlung ist ungültig" Fehler beim ausführen einer einfachen select auf eine view. Einschließlich 1b fixiert es für mich Die VS-Unterstützung angefordert wurde auf connect.microsoft.com/VisualStudio/feedback/details/260723/..., aber MS nicht reparieren wollen. Versuchte die erste Methode, und es funktionierte. Denke, es wird für die Arbeit eine kleine DB.
Zur Aktualisierung einer Tabelle in Ihr .dbml-Diagramm mit, Z. B. zusätzlichen Spalten, dies zu tun:
Aktualisieren Sie Ihre SQL Server-Explorer-Fenster.
Ziehen Sie die "neue" version der Tabelle in die .dbml-Diagramm (bericht1 im Bild unten).
Markieren Sie die zusätzlichen Spalten in der neuen version der Tabelle, drücken Sie Strg+C, um kopieren Sie die Spalten Hinzugefügt werden.
Klicken Sie auf die "alte" version Ihrer Tabelle und drücken Sie Strg+V einfügen, um die zusätzlichen Spalten in die bereits vorliegende version der Tabelle.
Dies scheint die einfachste, am wenigsten destruktive Methode, erfordert keine zusätzlichen Werkzeuge und funktioniert Prima in VS2017 Das ist viel weniger aufdringlich als die akzeptierte Antwort und weiterhin gut am Ende von 2018! Dies ist die beste Antwort für die schnelle (und nicht-so-schnell-änderungen an den schema). Ich habe viel Zeit genommen, wodurch sich das Modell schön Aussehen. Ich hasste es, löschen und ziehen von update-Dateien über. Für zusätzlichen Felder, das funktioniert Super!!! Für mich, diese zwei Probleme gelöst. Der erste war, wenn ich versuchte, zu kopieren und in einem anderen Feld innerhalb der Tabelle und benennen Sie Sie. Erstellt non-stop "nicht spezifiziert" build-Fehler beim validieren. Das andere Problem war, dass, wenn ich entfernt die Tabelle und dann kommt es wieder in seiner Gesamtheit, es führte zu einer viel größeren Unterschiede in git (weil Objekte wurden neu angeordnet, innerhalb der Datei). Mit dieser Methode sehe ich nur die Einfügung des neuen Feldes, die ist viel sauberer und einfacher zu verstehen, später.
Könnte man auch überprüfen Sie heraus die PLINQO code generation templates, basierend auf CodeSmith, mit denen Sie zu tun eine Menge tolle Sachen für und mit Linq-to-SQL:
erzeugen eine Datei pro Klasse (statt einer einzigen, riesigen Datei)
aktualisieren Sie Ihr Modell, wie gebraucht
viele weitere features
Check-out die PLINQO-site http://www.plinqo.com und haben einen Blick auf die intro-videos.
Das zweite tool, das ich kenne, sind die Huagati DBML/EDMX-tools, die es erlauben, update von DBML (Linq-to-SQL) und EDMX (Entity Framework) mapping-Dateien, und mehr (wie Namenskonventionen, etc.).
Marc
Nachdem Sie gerade herausgerissen CodeSmith / PLINQO ich Ihnen dringend gegen unter diesem Ansatz. Zugegeben, diese Antwort ist über 4 Jahre alt... an diesem Punkt in der Zeit, würde ich dringend empfehlen, gegen die Verwendung von Linq-to-SQL auf allen - Entity Framework statt, die deutlich bessere Wahl! Ja, ist es. Umzug in EF nach der überprüfung, dass die Anwendung funktionieren würde mit einem einfachen DBML statt PLINQO war der nächste Schritt, den ich nahm in abstauben eine alte Anwendung.
Wir verwenden eine benutzerdefinierte schriftliche T4-Vorlage, die dynamisch Abfragen, die information_schema-Modell für jede Tabelle in der alle unsere .DBML-Dateien, und überschreibt Teile des .DBML-Datei mit frisch schema-Informationen aus der Datenbank. Ich hoch empfehlen die Implementierung einer Lösung wie dieser - es hat mich gerettet eine Menge Zeit, und im Gegensatz zu löschen und re-hinzufügen von Tabellen zu Ihrem Modell erhalten Sie Ihre Assoziationen. Mit dieser Lösung erhalten Sie compile-Zeit Fehler, wenn Sie Ihre schema-änderungen. Sie wollen sicherstellen, dass Sie bei Verwendung eines version-control-system, obwohl, weil diffing ist wirklich praktisch. Dies ist eine großartige Lösung, die gut funktioniert, wenn Sie die Entwicklung mit einem DB-schema-first-Ansatz. Natürlich kann ich nicht teilen, meine Unternehmens-code, so sind Sie auf Ihrem eigenen für das schreiben selbst. Aber wenn Sie wissen, einige Linq-to-XML und in die Schule gehen können auf dieses Projekt, können Sie bekommen, wo Sie sein wollen.
Ich würde empfehlen die Verwendung des visual Designers gebaut in VS2008, wie die Aktualisierung der dbml aktualisiert auch den code für Sie generiert. Ändern der dbml außerhalb der visual designer führen würde, den zugrunde liegenden code nicht mehr synchronisiert.
Ja, aber die visual-designer von VS2008 nicht erkennen und reagieren auf Veränderungen in der zugrunde liegenden Datenbank 🙁 Kurz zu löschen und re-hinzufügen, gibt es keine Unterstützung für die Aktualisierung Ihrer Modell 🙁 Während das ist wahr, die Frage war sehr vage und nicht speziell erwähnen, wie ein Modell aktualisieren, wenn änderungen in der Datenbank.
Es ist eine nuance, um das aktualisieren von Tabellen aktualisieren die DBML... Foreign key-Beziehungen sind nicht immer sofort vorbei gebracht, wenn änderungen an bestehenden Tabellen. Die Arbeit um zu tun, einen build des Projektes und anschließend wieder fügen Sie die Tabellen wieder. Ich meldete dies an MS und deren Feste für VS2010.
In der Falle gespeicherte Prozedur update, sollten Sie es löschen aus der .dbml-Datei, und legen Sie es wieder. Aber wenn die gespeicherte Prozedur haben zwei Wege (ex: wenn etwas; Anzeige einige Spalten; else display einige andere Spalten), stellen Sie sicher, dass die beiden Pfade die gleichen Spalten-Aliase!!! Sonst ist nur der erste Pfad Spalten vorhanden.
Gibt es drei Möglichkeiten, um das Modell zu synchronisieren.
Löschen die geänderten Tabellen von designer, und ziehen Sie Sie zurück auf die designer-Oberfläche aus dem Datenbank-Explorer. Ich habe festgestellt, dass, damit dies zuverlässig funktioniert, müssen Sie zu:
ein. Aktualisieren des Datenbank-Schemas in der Datenbank-Explorer (Rechtsklick, aktualisieren)
b. Speichern Sie die designer nach dem löschen der Tabellen
c. Speichern Sie wieder nach dem ziehen der Tabellen zurück.
Hinweis aber, dass, wenn Sie geändert haben, alle Eigenschaften (zum Beispiel ausschalten der Kind-Eigenschaft einer association), wird dies natürlich verlieren diese Modifikationen — Sie haben werde, um Sie wiederzusehen.
Verwenden SQLMetal, sich zu regenerieren, von der das schema Ihrer Datenbank. Ich habe gesehen, eine Reihe von blog-posts, die zeigen, dass wie dieses script.
Änderungen direkt im Bereich Eigenschaften der DBML. Dies funktioniert für einfache änderungen, wie zum Beispiel das erlauben null-Werte in einem Feld.
Die DBML-designer nicht installiert standardmäßig in Visual Studio 2015 oder Visual Studio 2017. Schließen Sie VS, starten Sie den VS installer aus und ändern Sie Ihre installation. Die LINQ to SQL-tools ist die Funktion, die Sie installieren müssen.
Die VS-Unterstützung angefordert wurde auf connect.microsoft.com/VisualStudio/feedback/details/260723/..., aber MS nicht reparieren wollen.
Versuchte die erste Methode, und es funktionierte. Denke, es wird für die Arbeit eine kleine DB.
InformationsquelleAutor Robert Harvey
Zur Aktualisierung einer Tabelle in Ihr .dbml-Diagramm mit, Z. B. zusätzlichen Spalten, dies zu tun:
Das ist viel weniger aufdringlich als die akzeptierte Antwort und weiterhin gut am Ende von 2018!
Dies ist die beste Antwort für die schnelle (und nicht-so-schnell-änderungen an den schema). Ich habe viel Zeit genommen, wodurch sich das Modell schön Aussehen. Ich hasste es, löschen und ziehen von update-Dateien über. Für zusätzlichen Felder, das funktioniert Super!!!
Für mich, diese zwei Probleme gelöst. Der erste war, wenn ich versuchte, zu kopieren und in einem anderen Feld innerhalb der Tabelle und benennen Sie Sie. Erstellt non-stop "nicht spezifiziert" build-Fehler beim validieren. Das andere Problem war, dass, wenn ich entfernt die Tabelle und dann kommt es wieder in seiner Gesamtheit, es führte zu einer viel größeren Unterschiede in git (weil Objekte wurden neu angeordnet, innerhalb der Datei). Mit dieser Methode sehe ich nur die Einfügung des neuen Feldes, die ist viel sauberer und einfacher zu verstehen, später.
InformationsquelleAutor M463
Könnte man auch überprüfen Sie heraus die PLINQO code generation templates, basierend auf CodeSmith, mit denen Sie zu tun eine Menge tolle Sachen für und mit Linq-to-SQL:
Check-out die PLINQO-site http://www.plinqo.com und haben einen Blick auf die intro-videos.
Das zweite tool, das ich kenne, sind die Huagati DBML/EDMX-tools, die es erlauben, update von DBML (Linq-to-SQL) und EDMX (Entity Framework) mapping-Dateien, und mehr (wie Namenskonventionen, etc.).
Marc
an diesem Punkt in der Zeit, würde ich dringend empfehlen, gegen die Verwendung von Linq-to-SQL auf allen - Entity Framework statt, die deutlich bessere Wahl!
Ja, ist es. Umzug in EF nach der überprüfung, dass die Anwendung funktionieren würde mit einem einfachen DBML statt PLINQO war der nächste Schritt, den ich nahm in abstauben eine alte Anwendung.
InformationsquelleAutor marc_s
Wir verwenden eine benutzerdefinierte schriftliche T4-Vorlage, die dynamisch Abfragen, die information_schema-Modell für jede Tabelle in der alle unsere .DBML-Dateien, und überschreibt Teile des .DBML-Datei mit frisch schema-Informationen aus der Datenbank. Ich hoch empfehlen die Implementierung einer Lösung wie dieser - es hat mich gerettet eine Menge Zeit, und im Gegensatz zu löschen und re-hinzufügen von Tabellen zu Ihrem Modell erhalten Sie Ihre Assoziationen. Mit dieser Lösung erhalten Sie compile-Zeit Fehler, wenn Sie Ihre schema-änderungen. Sie wollen sicherstellen, dass Sie bei Verwendung eines version-control-system, obwohl, weil diffing ist wirklich praktisch. Dies ist eine großartige Lösung, die gut funktioniert, wenn Sie die Entwicklung mit einem DB-schema-first-Ansatz. Natürlich kann ich nicht teilen, meine Unternehmens-code, so sind Sie auf Ihrem eigenen für das schreiben selbst. Aber wenn Sie wissen, einige Linq-to-XML und in die Schule gehen können auf dieses Projekt, können Sie bekommen, wo Sie sein wollen.
InformationsquelleAutor mattmc3
Ich würde empfehlen die Verwendung des visual Designers gebaut in VS2008, wie die Aktualisierung der dbml aktualisiert auch den code für Sie generiert. Ändern der dbml außerhalb der visual designer führen würde, den zugrunde liegenden code nicht mehr synchronisiert.
Während das ist wahr, die Frage war sehr vage und nicht speziell erwähnen, wie ein Modell aktualisieren, wenn änderungen in der Datenbank.
InformationsquelleAutor Jason Miesionczek
Es ist eine nuance, um das aktualisieren von Tabellen aktualisieren die DBML... Foreign key-Beziehungen sind nicht immer sofort vorbei gebracht, wenn änderungen an bestehenden Tabellen. Die Arbeit um zu tun, einen build des Projektes und anschließend wieder fügen Sie die Tabellen wieder. Ich meldete dies an MS und deren Feste für VS2010.
DBML nicht angezeigt neue foreign key-Einschränkungen
Beachten Sie, dass die Anweisungen in der main Antwort nicht klar sind. Um die Tabelle zu aktualisieren
InformationsquelleAutor ΩmegaMan
In der Falle gespeicherte Prozedur update, sollten Sie es löschen aus der .dbml-Datei, und legen Sie es wieder. Aber wenn die gespeicherte Prozedur haben zwei Wege (ex: wenn etwas; Anzeige einige Spalten; else display einige andere Spalten), stellen Sie sicher, dass die beiden Pfade die gleichen Spalten-Aliase!!! Sonst ist nur der erste Pfad Spalten vorhanden.
InformationsquelleAutor Yasser Hosny Abu Elmakarem