Najlepszy sposób na aktualizację LINQ do klas SQL po zmianie schematu bazy danych

Używam klas LINQ do SQL w projekcie, w którym projekt bazy danych jest nadal w niewielkim stopniu zmienny.

Czy istnieje łatwy sposób synchronizacji klas ze schematem, czy też muszę ręcznie aktualizować klasy, jeśli zmieni się projekt tabeli?

Author: Compile This, 2008-09-02

7 answers

Możesz użyć SQLMetal.exe do wygenerowania pliku dbml i lub cs / VB. Użyj wstępnie zbudowanego skryptu, aby go uruchomić i skierować do katalogu, w którym należy twój projekt datacontext.

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>
 65
Author: vzczc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-02 17:03:37

Sam nie próbowałem, ale Huagati DBML / EDMX Tools jest polecany przez inne osoby.

Huagati DBML / EDMX Tools to dodatek dla Visual Studio, które dodaje funkcjonalność do Linq2SQL / DBML projektant diagramów w Visual Studio 2008, oraz do ADO.NET podmiot Framework designer w Visual Studio 2008 SP1 Dodatek dodaje nowe menu Opcje aktualizacji Linq2SQL designer diagramy ze zmianami w bazie danych, dla zmiana nazwy Linq-to-SQL (DBML) i EF (EDMX) klasy i właściwości do wykorzystania Konwencje nazewnictwa. Net oraz dla dodawanie dokumentacji/opisów do Klasy generowane przez Linq-to-SQL z właściwości bazy danych.

Zrzut ekranu z narzędzi DBML

 17
Author: Espo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-02 07:46:19

Oto prosta poprawka bez dodatkowego oprogramowania, która działa tylko dla prostych zmian (Jak dodane pola, kilka tabel, itp.).

Instrukcje:

  • pobierasz kopię zmienionej tabeli do projektanta (zostanie usunięta później)
  • teraz Zaznacz wszystkie nowe (lub zmienione) pola i (right-click ->) copy
  • w oryginalnej tabeli kliknij prawym przyciskiem myszy i insert je (najpierw usuń zmienione pola)
  • teraz Usuń tabelę, którą skopiowałeś z

I know it is trochę oczywiste, ale jakoś nie intuicyjne, i to bardzo mi pomogło, ponieważ wszystkie właściwe atrybuty i typy zostaną skopiowane, a wszystkie linki pozostaną nienaruszone. Mam nadzieję, że to pomoże.

Kiedy stosować:

Oczywiście jest to - jak wspomniano-dla małych zmian, ale na pewno lepsze niż ręczne zastępowanie tabel wieloma linkami, lub gdy nie chcesz, aby cała struktura bazy danych generowana przez SQLMetal. Na przykład, gdy masz dużą liczbę tabel (np. SAP) lub gdy używasz usieciowanych tabel z różnych bazy danych.

 8
Author: Levite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 15:51:37

DamienG napisał kilka szablonów T4 które mogą zastąpić niektóre z tego, co generuje dla Ciebie VS. Można je ponownie uruchomić w dowolnym momencie za pomocą narzędzia wiersza poleceń.

Szablony T4 mają dodatkową zaletę, że są edytowalne. Pozwala to dostosować to, co jest generowane do Ciebie treści serca.

 5
Author: Rory Becker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-21 12:56:46

Myślę, że Jeff skarżył się na to ostatnio. Jedną z powszechnych technik jest ponowne przeciągnięcie wszystkich obiektów do projektanta...

Mam nadzieję, że ktoś inny będzie miał lepsze podejście!

 4
Author: Michael Haren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-02 16:56:58

Napisałem narzędzie do wykonywania zmian skryptów w skryptach Dbml zobacz http://code.google.com/p/linqtodbmlrunner / i mój blog http://www.adverseconditionals.com

 1
Author: mcintyre321,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 18:21:39

Co powiesz na modyfikację właściwości encji / tabeli w przestrzeni projektowej DataContext w Visual Studio?

Na przykład, jeśli dodałem kolumnę do tabeli SQL Server:

  1. Otwórz *.plik dbml.
  2. Kliknij prawym przyciskiem myszy obiekt i wybierz Dodaj > właściwość.
  3. wypełnij wartości w oknie Właściwości dla nowej kolumny.
  4. Zbuduj swoje rozwiązanie.

Automatycznie generowane klasy modeli powinny odzwierciedlać nową kolumnę, która została dodano.

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

 0
Author: Dean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 22:32:47