2013-09-23 12 views
7

Definicja typu dostawcy typu F # często wymaga stałego wyrażenia, np. dla operatora typu SQL:F # Typ Dostawcy i ciągła integracja

type dbSchema = SqlDataConnection<"Data Source=MySqlServer;Initial Catalog=MyDatabase;"> 

Jednak, gdy popełnienie kod do SCM, a ponadto posiadające serwera build robi swoje rzeczy, to prawdopodobnie nie chcą korzystać z tego samego ciąg połączenia, ale raczej ciąg połączenia bazy danych serwera SQL generowanej z procesu budowania.

Czy istnieje rozwiązanie tego problemu?

Byłoby naprawdę miło móc wykonać tę pracę, ponieważ zapewniłoby to sprawdzenie kodu dostępu do bazy danych podczas kompilacji.

Aktualizacja Proponowana przez @tomaspetricek rozwiązanie działa bardzo dobrze, ale musiałam dodać nazwę dostawcy w ciągu połączenia:

<add name="DbConnectionString" providerName="System.Data.SqlClient" connectionString="Data Source=MySqlServer;Initial Catalog=MyDatabase;"/> 
+0

Byłoby jeszcze lepiej, gdyby ten ciąg pochodził z pliku konfiguracyjnego. –

+0

@RobertHarvey Rzeczywiście, dokładnie to można łatwo zrobić ;-) –

Odpowiedz

12

Można oczywiście określić ciąg połączenia przy użyciu klucza w plik konfiguracyjny (patrz MSDN documentation):

SqlDataConnection<ConnectionStringName="...", ConfigFile="app.config"> 

ogólnie dostawcą typu może wymagać pewnej stałej ekspresji, ale myślę, że większość powszechnie stosowanych te stanowią drogę dla unikanie tego. Na przykład SqlDataConnection może odczytać ustawienie z pliku konfiguracyjnego, inni dostawcy standardowego typu F # umożliwiają określenie LocalSchemaFile, która pozwala określić lokalnie potrzebną strukturę (np. *.dbml plik dla SQL).

Dostawcy danych typu F # mogą pobierać adresy URL do plików zdalnych, ale mogą także pobierać pliki lokalne. Myślę więc, że zawsze powinien istnieć sposób na określenie informacji bez określania stałego ciągu połączenia (itp.) - ale możesz zapytać o konkretnych dostawców.

+0

Mam zaktualizowane pytanie z przykładem. – spacedoom

Powiązane problemy