2009-05-13 20 views
12

Naprawdę głupie pytanie, przepraszam, ale nie mogę go znaleźć w Google (jestem pewien, że jest w screencastu lub gdzieś w innym miejscu). Mam schemat DBML (linq2sql) i zmieniłem bazę danych. W VS2008, jak mogę "odświeżyć" diagram? Nie ma opcji Widok -> Odśwież lub Prawidłowe kliknięcie-> Odśwież lub Aktualizuj.Odświeżanie diagramu DBML?

W obecnej wersji, muszę odtworzyć wszystkie klasy linq2sql za każdym razem, gdy aktualizuję bazową bazę danych.

Odpowiedz

8

prawym przyciskiem myszy i wybierz „uruchom niestandardowych funkcji” (w roztworze Explorer w dbml pliku)

+1

Cóż, to trochę nieintuicyjne. Dzięki! – Chris

+0

do cholery tak, zajęło mi trochę czasu odkrycie, że "narzędzie niestandardowe" jest faktycznie rzeczą, która generuje calsses :) –

+4

To nie aktualizuje pliku DBML ze zmianami w bazie danych. Wywołuje generator kodu, który generuje kod C# lub VB z pliku DBML. Zmiany DB nadal muszą być propagowane do pliku DBML w ten czy inny sposób - zobacz moją odpowiedź. – KristoferA

5

Jeśli chcesz wnieść zmiany w bazie danych na diagramie dbml następnie można:

a) Zdjąć zmieniły podmioty z diagramu projektanta i ponownie przeciągnij je. Utracisz wszelkie dostosowania (np. Zmiany nazw klas i właściwości itp.).

b) ręcznie zaktualizować schemat, dodawanie/usuwanie klas, właściwości członków itp

c) Za pomocą narzędzia stronę trzecią zdolną do porównywania i aktualizowania pliku dbml z podstawowej bazy danych. Jednym z takich narzędzi jest mój dodatek, Huagati DBML/EDMX Tools. Dodaje kilka funkcji do projektanta L2S w VS2008 i VS2010, w tym aktualizacja/synchronizacja, porównywanie, zmiana nazwy, wymuszanie reguł nazw, dokumentacja z rozszerzonych właściwości/indeksów/etc, wiele "widoków" na diagram dbml itp.

+0

Jeśli/ręcznie zaktualizujesz diagram, dodając go do widoku (można również edytować .xml w edytorze tekstu), upewnij się, że nie tylko ustawiłeś 'name', ale także ustawiłeś' source' (na odpowiednia kolumna). Pozwoli to uniknąć tego komunikatu o błędzie: 'Brak nazwy obiektu lub kolumny lub jest pusty. W przypadku instrukcji SELECT INTO sprawdź, czy każda kolumna ma nazwę " –

1

Najpierw należy zaktualizować plik .sdf do pliku .dbml. Zrobiłem to, otwierając polecenie cmd i kierując ścieżkę równą ścieżce SqlMetal.exe. następnie zmień katalog na bazę danych .sdf, a następnie wpisz "SqlMetal.exe (nazwa bazy danych) .sdf/dbml:(nameofdatabase).dbml". Po tym kliknij prawym przyciskiem myszy i wybierz "uruchom narzędzie niestandardowe" (w eksploratorze rozwiązań w pliku dbml). To powinno wystarczyć (przynajmniej dla mnie).