2009-09-04 17 views
14

Chciałbym przechowywać długie skrypty .sql w moim rozwiązaniu i uruchamiać je programowo. Zrozumiałem już, jak wykonać ciąg zawierający skrypt SQL, ale nie mam pojęcia, jak odczytać ciąg z pliku, który byłby przechowywany w rozwiązaniu (w podfolderze/Scripts na przykład).Wykonywanie skryptu SQL przechowywanego jako zasób

+0

Jest dobrze szczegółowe odpowiedzi na temat osadzonego zasobu w duplikatu pytanie https://stackoverflow.com/questions/23301964/ef-6-code-first-with-custom-stored -procedure/39673550 # 39673550 –

Odpowiedz

19

Najpierw edytuj właściwości pliku .sql, aby został osadzony jako zasób.

Następnie za pomocą kodu podobnego do następującego, aby pobrać skrypt:

string commandText; 
Assembly thisAssembly = Assembly.GetExecutingAssembly(); 
using (Stream s = thisAssembly.GetManifestResourceStream(
     "{project default namespace}.{path in project}.{filename}.sql")) 
{ 
    using (StreamReader sr = new StreamReader(s)) 
    { 
     commandText = sr.ReadToEnd(); 
    } 
} 
+2

@Will - W projekcie SQL CLR wydaje się, że nie ma możliwości dodania silnie wpisanego pliku zasobów. – jpierson

+1

@Wyroby internetowe również są kiepskim rozwiązaniem, imho. Wydaje się, że nie ma sposobu na modyfikację wygenerowanych komentarzy XML, a podsumowania, takie jak * Wyszukuje zlokalizowane ciągi podobne do tworzenia tabeli dbo.Foo (... * są mało użyteczne – Stijn

24

Dodaj pliki SQL do projektu, a następnie utworzyć nowy plik zasobów. Otwórz plik SQL i wybierz "Pliki" z lewego górnego menu rozwijanego (domyślnie jest to Ciągi). Następnie naciśnij przycisk dodawania zasobów i przejdź do/wybierz plik SQL. To pozwala uzyskać SQL z pliku zasobów bez utraty bezpieczeństwa typu tak:

SqlFiles.SqlScript

Powyższy proces jest w Visual Studio 2010. I napisał o tym na my blog.

+0

Wiesz, że to stary post. bardzo schludne, ale jak dodać parametry do skryptu? – zmaster

+0

Powinieneś być w stanie użyć 'string.Format' do tego. –

+0

Dodaj do resrouces, i ustaw plik do zasobów, w kodzie napisz NAMESPACE.Properties.Resources .ScriptDB.ToString() –

0

Dodaj plik do Zasobów i ustaw plik do Zasobu w kodzie zapisu:

String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString() 
0

Zastosowanie QueryFirst. Umieszczasz swój sql w szablonie .sql dostarczonym przez narzędzie. Za kulisami QueryFirst kompiluje go jako zasób i łączy połączenie w celu pobrania go w czasie wykonywania. Musisz tylko martwić się wywołaniem Execute() na wygenerowanej klasie wrapper, a twoje wyniki są dostępne poprzez wygenerowane POCO. Bezpieczeństwo typu od końca do końca. Nigdy nie trzeba pamiętać nazwy kolumny lub typu danych, a także znacznych zalet posiadania sql, gdzie bóg zamierzał ... w pliku .sql.

disclaimer: Napisałem QueryFirst

Powiązane problemy