Jak zaktualizować plik Linq do pliku SQL dbml?

Jak zaktualizować Linq do SQL .plik dbml?

 182
Author: Michael Myers, 2009-07-10

7 answers

Istnieją trzy sposoby synchronizacji modelu.

  1. Usuń zmodyfikowane tabele z projektanta i przeciągnij je z powrotem na powierzchnię projektanta z Eksploratora bazy danych. Odkryłem, że aby to działało niezawodnie, trzeba:

    A. odśwież schemat bazy danych w Eksploratorze bazy danych (kliknij prawym przyciskiem myszy, odśwież)
    b. Zapisz projektanta po usunięciu tabel
    C. Zapisz ponownie po przeciągnięciu tabel z powrotem.

    Uwaga chociaż, że jeśli zmodyfikowałeś dowolne właściwości (na przykład, wyłączając właściwość potomną skojarzenia), to oczywiście straci te modyfikacje - będziesz musiał je ponownie wprowadzić.

  2. Użyj SQLMetal do regeneracji schematu z bazy danych. Widziałem wiele postów na blogu, które pokazują Jak to napisać.

  3. Dokonuj zmian bezpośrednio w panelu Właściwości DBML. Działa to dla prostych zmian, takich jak zezwalanie na NULL na pole.

DBML designer nie jest domyślnie zainstalowany w Visual Studio 2015 lub Visual Studio 2017. Będziesz musiał zamknąć VS, uruchomić instalator VS i zmodyfikować instalację. Należy zainstalować narzędzie LINQ to SQL tools.

 232
Author: Robert Harvey,
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
2018-08-23 05:27:08

Aby zaktualizować tabelę w Twoim .dbml-diagram z np. dodanymi kolumnami, zrób to:

  1. zaktualizuj okno Eksploratora SQL Server.
  2. Przeciągnij" nową " wersję tabeli do .dbml-diagram (raport1 na obrazku poniżej).

raport1 to nowa wersja tabeli

  1. Zaznacz dodane kolumny w nowej wersji tabeli, naciśnij Ctrl+C aby skopiować dodane kolumny.

skopiuj dodane kolumny

  1. Kliknij "starą" wersję tabela i naciśnij Ctrl+V aby wkleić dodane kolumny do już obecnej wersji tabeli.

wklej dodane kolumny do starej wersji tabeli

 35
Author: M463,
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
2015-09-02 15:16:17

Możesz również sprawdzić PLINQO Zestaw szablonów generowania kodu, opartych na CodeSmith, które pozwalają na wiele fajnych rzeczy dla I z Linq-to-SQL:

  • generowanie jednego pliku na klasę (zamiast pojedynczego, ogromnego pliku)
  • Zaktualizuj swój model w razie potrzeby
  • wiele innych funkcji

Sprawdź stronę PLINQO na http://www.plinqo.com [2]} i zerknij na filmiki z intro.

Drugim narzędziem jakie znam są Huagati Narzędzia DBML / EDMX, które umożliwiają aktualizację plików mapowania DBML (Linq-to-SQL) i EDMX (Entity Framework) i innych (np. konwencje nazewnictwa itp.).

Marc

 5
Author: marc_s,
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
2009-07-10 16:08:45

Używamy niestandardowego szablonu T4, który dynamicznie zapytuje model information_schema dla każdej tabeli we wszystkich naszych .Plików DBML, a następnie nadpisuje części .Plik DBML ze świeżymi informacjami o schemacie z bazy danych. I wysoce zalecam wdrożenie takiego rozwiązania - zaoszczędziło mi to mnóstwo czasu, a w przeciwieństwie do usuwania i ponownego dodawania tabel do modelu, możesz zachować swoje skojarzenia. Dzięki temu rozwiązaniu pojawią się błędy w czasie kompilacji, gdy zmieni się twój schemat. Chcesz się upewnić, że używasz systemu kontroli wersji, ponieważ różnicowanie jest naprawdę przydatne. Jest to świetne rozwiązanie, które działa dobrze, jeśli rozwijasz się z pierwszym podejściem schematu DB. Oczywiście, nie mogę udostępnić kodu mojej firmy, więc jesteś zdany na siebie, że sam to napiszesz. Ale jeśli znasz jakiś Linq-to-XML i możesz iść do szkoły w tym projekcie , Możesz dostać się tam, gdzie chcesz być.

 4
Author: mattmc3,
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
2011-01-28 13:49:35

Zalecałbym użycie Visual designera wbudowanego w VS2008, ponieważ aktualizacja dbml aktualizuje również kod, który jest generowany dla Ciebie. Modyfikowanie dbml poza visual designerem spowodowałoby, że kod bazowy nie będzie zsynchronizowany.

 2
Author: Jason Miesionczek,
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
2009-07-10 15:20:31

Istnieje niuans w aktualizacji tabel, a następnie aktualizacji DBML... Relacje klucza obcego nie zawsze są natychmiast przenoszone, jeśli zmiany są wprowadzane do istniejących tabel. Obejście polega na zbudowaniu projektu, a następnie ponownym dodaniu tabel. Zgłosiłem to do MS i jest naprawiane dla VS2010.

DBML display nie pokazuje nowych ograniczeń klucza obcego


Zwróć uwagę, że instrukcje podane w głównej odpowiedzi nie są jasne. Aby zaktualizować tabela

  1. Otwórz powierzchnię projektową dbml
  2. Zaznacz wszystkie tabele prawym przyciskiem myszy - > kliknij - > Wybierz wszystkie lub CTRLa
  3. CTRLx (Cut)
  4. CTRLv (Wklej)
  5. Zapisz i Odbuduj rozwiązanie.
 2
Author: ΩmegaMan,
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
2015-10-14 12:29:17

W przypadku aktualizacji procedury składowanej należy ją usunąć z .plik dbml i włóż go ponownie. Ale jeśli procedura składowana ma dwie ścieżki (np.: jeśli coś; wyświetla niektóre kolumny; w przeciwnym razie wyświetla inne kolumny), upewnij się, że obie ścieżki mają te same aliasy kolumn!!! W przeciwnym razie będą istnieć tylko pierwsze kolumny ścieżki.

 0
Author: Yasser Hosny Abu Elmakarem,
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-04-04 21:02:57