LINQ und Stored procedures DBML problem der Aktualisierung
Ich habe schwere frustration mit DBML-Dateien nicht aktualisieren, wenn ich das alter meiner gespeicherten Prozeduren.
Dies ist, was passiert. Ich verändert meine gespeicherten Prozedur. Ich löschen Sie dann die gespeicherte Prozedur aus .DBML-Datei und re-hinzufügen. Es Aktualisierungen korrekt in die .DBML-Datei, aber die .designer.cs-Datei wird nicht aktualisiert. Die einzige Lösung die ich gefunden habe, ist das löschen der gespeicherten Prozedur, dann löschen Sie die Tabelle, die gespeicherte Prozedur zurückgibt, fügen Sie die Tabelle, dann fügen Sie die gespeicherte Prozedur (alle in der .DBML-Datei). Und das auch nur manchmal funktioniert der trick.
Hat sonst noch jemand dieses problem gehabt? Sicherlich gibt es besser geeignete Methode zum aktualisieren der DBML-Dateien in Visual Studio 2008?
Vielen Dank im Voraus
- Die DBML visual designer ist sehr viel ein "one-shot" Sache - es gibt keine update-Funktionalität von jeder Art. Man kann entweder untersuchen, ein Drittanbieter-tool, wie die DBML Tools von Huagati um dieses Problem zu lösen, oder wechseln Sie zu Entity Framework 4, die hat viel bessere Unterstützung für die Aktualisierung Ihrer bestehenden Modell aus der Datenbank, wenn die zugrunde liegende Datenbank hat sich geändert.
- Ich weiß, das ist alt, aber ich stolperte über es heute um zu erfahren, ob das Verhalten (durch hinzufügen der neuen Klasse designer) erwartet. Warum nicht einfach Ausschneiden und einfügen von neu erstellten Klasse alte Klasse und dann löschen, die neu erstellte Klasse. Das hält die Dinge sortiert, die mit Ihrer version control und gibt Ihnen die richtige Klasse.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit, die DBML-Datei wird aktualisiert, wenn Sie ändern die SP.
Ich habe einen Vorschlag für Sie, es loszuwerden. Dies ist, was wir Folgen in unseren Projekten.
Wann immer Sie aktualisieren in Ihrem SP, ob es Eingabe-oder Ausgabe-Parameter. Bearbeiten Sie die dbml-Datei als xml-Datei (die Sie verwenden können, öffnen Sie als xml in VS nur) und speichern Sie die dbml-Datei. Das wird automatisch aktualisiert und die änderungen im designer.cs-Datei als auch. Auf diese Weise werden Sie nicht haben, zu löschen, die die SP von dbml und wieder neu hinzufügen um die updates zu bekommen. Das ist zwar manueller Prozess, aber es hilft wirklich eine Menge.
Diese Weise können Sie sogar ändern Sie die Namen der entities (zur Einhaltung entity naming conventions) für die Ausgabe, die Sie bekommen von der SP als diejenigen, die Standard-Namen sind die gleichen wie die SP name.
eine weitere Sache, was ich Tat, war , öffnete dem server-explorer von der Ansicht. es wird eine Liste der db-verbindungen. dort Rechtsklick auf die jeweilige Verbindung, welche Punkte auf Ihre Datenbank aktualisieren. Wenn Sie Hinzugefügt haben alle neuen gespeicherten Prozeduren oder wenn Sie jedem Update, wird es automatisch aktualisiert.
1 beachten Sie, dass SQL-und VS ist komplett 2 getrennte Dienste. es ist einfach miteinander zu verbinden, bedeutet nicht, Sie synchronisieren sich gegenseitig.
2 meiner Meinung nach DBML ist ein bisschen ms-sql nur. ich benutze zum erstellen von DB-Werk völlig zu betreiben Basis an Schnittstellen und Rückgabe der Daten als DataTable-ot-DataSet. Dieser code kann für alle standard-db.
Auch in Entity Framework 6 das ist ein problem.
Löschen Sie die veränderten Elemente in der .edmx-Datei und "Update Model from Database".