2013-09-23 22 views
7

Die Typdefinition eines Providers vom F # -Typ erfordert oft einen konstanten Ausdruck, z. für den SQL-Typ-Anbieter:F # -Typ-Provider und kontinuierliche Integration

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

Wenn jedoch den Code SCM zu begehen, und ferner einen Build-Server zu tun seine Sache ist, Sie wollen wahrscheinlich nicht die gleiche Verbindungszeichenfolge verwenden, sondern die Verbindungszeichenfolge einer SQL Server-Datenbank, die aus dem Build-Prozess generiert wird.

Gibt es eine Lösung für dieses Problem?

Es wäre wirklich schön, wenn dies funktionieren würde, da es eine Kompilierzeitüberprüfung des Datenbankzugriffscodes bereitstellen würde.

aktualisieren Die Lösung von @tomaspetricek vorgeschlagen funktionierte sehr gut, aber ich hatte einen Provider-Namen zu der Verbindungszeichenfolge hinzuzufügen:

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

Es wäre noch besser, wenn diese Zeichenfolge aus einer Konfigurationsdatei stammt. –

+0

@RobertHarvey In der Tat, genau das kann man leicht machen ;-) –

Antwort

12

Sie können sicherlich die Verbindungszeichenfolge geben Sie einen Schlüssel in einem mit Konfigurationsdatei (siehe MSDN documentation):

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

Im allgemeinen ist ein Typ-Provider kann eine gewissen konstanten Ausdruck erfordern, aber ich denke, die meisten der weit verbreiteten diejenigen bieten eine Möglichkeit für dies zu vermeiden. Beispiel: SqlDataConnection kann die Einstellung aus der Konfigurationsdatei lesen, andere Standardanbieter vom Typ F # ermöglichen die Angabe LocalSchemaFile, mit der Sie die erforderliche Struktur lokal angeben können (z. B. *.dbml Datei für SQL).

Die Anbieter des F # -Datentyps können eine URL zu einer Remote-Datei übernehmen, sie können jedoch auch eine lokale Datei verwenden. Ich denke also, dass es immer eine Möglichkeit geben sollte, die Informationen ohne Angabe einer konstanten Verbindungszeichenfolge (etc.) anzugeben - aber fragen Sie nach bestimmten Anbietern.

+0

Ich habe die Frage mit einem Beispiel aktualisiert. – spacedoom

Verwandte Themen