Ich verwende LINQ to SQL-Klassen in einem Projekt, in dem das Datenbankdesign noch im Fluss ist.
Gibt es eine einfache Möglichkeit, die Klassen mit dem Schema zu synchronisieren, oder muss ich die Klassen manuell aktualisieren, wenn sich ein Tabellenentwurf ändert?
c#
.net
linq-to-sql
Kompilieren Sie dies
quelle
quelle
Antworten:
Sie können SQLMetal.exe verwenden, um Ihre dbml- und / oder cs / vb-Datei zu generieren. Verwenden Sie ein vorgefertigtes Skript, um es zu starten und auf das Verzeichnis abzuzielen, zu dem Ihr Datenkontextprojekt gehört.
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe /server:<SERVER> /database:<database> /code:"path\Solution\DataContextProject\dbContext.cs" /language:csharp /namespace:<your namespace>
quelle
Ich habe es selbst nicht ausprobiert, aber Huagati DBML / EDMX Tools wird von anderen Personen empfohlen.
quelle
Hier ist eine einfache Lösung ohne zusätzliche Software, die nur für einfache Änderungen (wie hinzugefügte Felder, wenige Tabellen usw.) funktioniert.
Anleitung:
right-click ->
)copy
insert
Sie in Ihrer ursprünglichen Tabelle mit der rechten Maustaste darauf (löschen Sie zuerst die geänderten Felder).Ich weiß, dass es ein bisschen offensichtlich ist, aber irgendwie nicht intuitiv, und es hat mir sehr geholfen, da alle richtigen Attribute und Typen kopiert werden und alle Links intakt bleiben. Ich hoffe es hilft.
Wann zu verwenden:
Natürlich ist es - wie gesagt - für kleine Änderungen, aber sicherlich besser als das manuelle Ersetzen von Tabellen durch viele Links oder wenn Sie nicht möchten, dass Ihre gesamte Datenbankstruktur von SQLMetal generiert wird. Zum Beispiel, wenn Sie eine große Anzahl von Tabellen haben (z. B. SAP) oder wenn Sie vernetzte Tabellen aus verschiedenen Datenbanken verwenden.
quelle
DamienG hat einige t4-Vorlagen geschrieben, die einige der von VS für Sie generierten Vorlagen ersetzen können. Diese können jederzeit über ein Befehlszeilentool erneut ausgeführt werden.
T4-Vorlagen haben den zusätzlichen Vorteil, dass sie bearbeitet werden können. Auf diese Weise können Sie optimieren, was nach Herzenslust generiert wird.
quelle
Ich denke, Jeff hat sich kürzlich darüber beschwert. Eine übliche Technik besteht darin, alle Objekte erneut in den Designer zu ziehen ...
Ich hoffe, jemand anderes mischt sich mit einem besseren Ansatz ein!
quelle
Ich habe ein Tool geschrieben, um Skriptänderungen an Dbml-Skripten vorzunehmen. Siehe http://code.google.com/p/linqtodbmlrunner/ und mein Blog http://www.adverseconditionals.com
quelle
Wie wäre es mit dem Ändern der Eigenschaften der Entität / Tabelle in der DataContext-Entwurfsoberfläche in Visual Studio?
Zum Beispiel, wenn ich einer SQL Server-Tabelle eine Spalte hinzugefügt habe:
Die automatisch generierten Modellklassen sollten die neue Spalte widerspiegeln, die hinzugefügt wurde.
quelle