2010-11-20 27 views
6

Stworzyłem model bazy danych z metodą pierwszego modelu przy użyciu Entity Framework 4.0. Następnie utworzyłem skrypt sql przy użyciu Generowanie bazy danych z modelu ... Mam również utworzony plik bazy danych SQL Server w moim folderze App_Data. Jak mam teraz uruchomić plik SQL na tym pliku MDF?Jak uruchomić skrypt SQL na podstawie pliku MDF?

Używam Visual Studio 2010.

+2

Czy mogę uzyskać informacje zwrotne na temat tego głosowania? – gligoran

+0

Awans. Jest to użyteczne i jasne. Dostałem podpowiedź do rozwiązania rozwiązania z odpowiedzi @jedatu poniżej. – Zeeshan

Odpowiedz

1

znalazłem rozwiązanie, ale jest to nieco hacky.

Mam SQL Server Express (2008 R2). Tak więc przy generowaniu bazy danych z modelu łączę się z nią i pozwalam jej budować tam bazę danych. Następnie przejdę do C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA. Część 10_50 jest ze względu na wersję i może być inna dla ciebie. W tym folderze znajduje się plik .mdf o nazwie podobnej do bazy danych - .mdf. Istnieje również plik _log.ldf. Skopiowałem je do folderu App_Data mojego projektu.

To działa, ale jest bardzo czasochłonne, aby wygenerować nową bazę danych .mdf dla każdej zmiany w modelu. Robię to tuż przed wysyłką.

Jeśli znajdziesz lepszą odpowiedź, udostępnij.

+0

To nie będzie przydatne rozwiązanie, ponieważ większość programistów jest używana do tworzenia plików mdf w swoich folderach projektu, a nie w plikach programu. – Zeeshan

5

Wpadłem na ten sam problem i oto, co sprawdziło się u mnie.

Po wybraniu opcji "Generuj bazę danych z modelu ..." utworzyłem nowy plik MDF. Ten proces działał dobrze, a Visual Studio wygenerowało potrzebny skrypt SQL. Jednak nie wiedziałem, jak połączyć się z tym samym plikiem MDF, aby uruchomić skrypt.

Okazało się to dość łatwe.

  1. prawym przyciskiem myszy nad scenariuszem i wybierz Połączenie> Połącz

  2. Nazwa serwera uwierzytelniania i powinien już być ustawiony dla lokalnej instancji SQLEXPRESS.

  3. Kliknąć na Opcje przycisk

  4. Kliknij Dodatkowe parametry połączeń zakładka

  5. Wklej w ścieżce do pliku bazy danych za pomocą poniższych wskazówek:

    AttachDBFilename = C: \ Path \ To \ Database \ LocalData.mdf; database = LocalData;

  6. Kliknij przycisk Podłącz

Jeśli nadal masz problemy z połączeniem może być, ponieważ nie ma już otwarte połączenie. Sprawdź eksplorator serwera i jeśli połączenie jest otwarte, kliknij prawym przyciskiem myszy i wybierz Zamknij połączenie.

Ten proces spowoduje również utworzenie trwałego połączenia, dopóki skrypt SQL pozostanie podłączony. Będziesz chciał zamknąć skrypt lub wybrać opcję Prawym przyciskiem myszy> Połączenie> Odłącz.

Więcej informacji można znaleźć na to pytanie: EF4 Generate Database

+0

Co należy zastąpić 'database = LocalData;'? – Shimmy

+0

Nie mogę definitywnie odpowiedzieć na to pytanie. Nie sądzę, że tak naprawdę ma znaczenie nazwa bazy danych, ale dla mnie zawsze pasowałbym do nazwy pliku MDF bez rozszerzenia oczywiście. – jedatu

+0

dziękuję, to działało również dla mnie. – Michael

0

I napotkał ten sam problem, model Pierwsze podejście w mvc4 korzystając EF5. To co zrobiłem to stworzyć projekt, dodać nowy model, dodać jednostki i powiązania na diagramie edmx. Kliknij prawym przyciskiem myszy na diagramie i wybierz "Generuj bazę danych z modelu". Generuje to plik sql.

Teraz dodaj plik mdf, na przykład Database1.mdf (Dodaj> Nowy element> Dane> Baza danych SQL Server) w folderze App_Data w eksploratorze rozwiązań.

Kliknij prawym przyciskiem myszy> Otwórz w tym pliku mdf. Teraz w panelu właściwości masz ciąg połączenia. Po prostu skopiuj to, jak jest.

Powrócić do wygenerowanego skryptu SQL, kliknąć prawym przyciskiem myszy> Exeecute. Wyskakujące okienko pyta o parametry połączenia. Upewnij się, że masz poprawną wartość w nazwie serwera (użyj nazwy komputera lub 127.0.0.1).

Teraz w opcjach, kliknij kartę Dodatkowe parametry połączenia i wklej ciąg połączenia skopiowany z właściwości pliku mdf.

To działało doskonale ode mnie i jest dość logiczne. Nie ma potrzeby bezpośredniego korzystania z katalogu instalacyjnego programu SQL Server.

0

Wspaniale Odpowiedzi powyżej, ale musiałem zrobić jeszcze kilka kroków w VS2013, ale rozwiązałem z pomocą tutaj, jak następuje.

  1. stworzyłem ADO.NET Model z istniejących .mdf
  2. kliknięciu prawym przyciskiem myszy -> Generowanie bazy danych z modelu
  3. Kliknij prawym przyciskiem .mdf w Solution Explorer i Open
  4. W panelu Właściwości skopiować Connection Ciąg do schowka
  5. W oknie SQLQuery utworzonym przez model ADO kliknij Zmień połączenie
  6. W nowym oknie Połącz z serwerem -> Dodatkowe parametry połączenia -> wklej ciąg połączenia ze schowka
  7. W Server Explorer kliknij prawym przyciskiem myszy bazę danych -> New Query
  8. skopiuj i wklej zapytanie z ADO wygenerowanego skryptu do nowego okna zapytania
  9. zmiany użytkowania [yourdatabase.mdf], aby użyć [longPath] gdzie longPath jest bardzo długa ścieżka wymieniona w menu rozwijanym u góry. Najprostszym sposobem jest rozpoczęcie pisania i CTRL-SPACE to.
  10. Uruchom zapytanie
  11. Zapisz longPath, ponieważ możesz po prostu wkleić go do USE [] na każdym nowym Zapytaniu wygenerowanym przez ADO.

Mam nadzieję, że to pomoże komuś - Happy Coding!

+1

Minęło kilka lat od mojego pierwotnego pytania i odpowiedzi, ale od tego czasu odkryłem, że LINQPad może obsługiwać pliki '.mdf'. Spójrz na to: http://stackoverflow.com/questions/4824005/can-linqpad-connect-to-an-mdf-file – gligoran