Ich habe versucht, FSharp Datenanbieter, sondern gegen die Postgresql mit npgsql. Und ich bin in der ersten Zeile kaputt gegangen.
Wenn ich versuche, SqlDataConnection zu erstellen, gibt es einen Fehler mit der Nachricht, dass die Verbindungszeichenfolge nicht korrekt ist.
Der Typ Provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' hat einen Fehler gemeldet: Schlüsselwort nicht unterstützt: 'port: 5432; database'.
Jetzt teste ich Verbindungszeichenfolge und auch Daten mit Servicestack.Ormlite. Das verwendet im Grunde IdbConnection. Also, Verbindung ist alles korrekt. Aber ich weiß nicht, warum Type Provider nicht funktioniert.
Hier ist Code.
%Vor%Im obigen Code funktioniert die erste kommentierte Zeile nicht, während bei den gleichen Einstellungen der Code funktioniert. Das heißt, das Problem ist nur mit Typ Provider nicht mit Verbindungen IMHO.
Muss ich irgendwelche anderen Einstellungen vornehmen?
Bitte lassen Sie mich wissen, wenn weitere Details erforderlich sind.
AKTUALISIEREN
Nach dem Kommentar von kvb habe ich beides versucht. Hier ist Code mit Web-Konfiguration aktualisiert.
%Vor%Und hier ist Web-Konfiguration
%Vor%und hier ist die Montage in appconfig. Ich denke nicht, dass es in GAC sein wird, wie ich über nuget hinzugefügt habe
%Vor%Oben ist beides kommentiert und ein anderes, ohne das nicht kommentiert wird, versagt mit unterschiedlichem Fehler. Erster Fehler mit Fehler
Der Typ Provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' hat einen Fehler gemeldet: Fehler beim Lesen des Schemas. Fehler 7001: Die angegebene Store Provider 'Npgsql' kann nicht in der Konfiguration gefunden werden, oder 'Npgsql' ist nicht gültig. Das angeforderte .Net Framework konnte nicht gefunden werden Datenanbieter. Es ist möglicherweise nicht installiert.
und der zweite ist mit diesem Fehler
Der Typ Provider 'Microsoft.FSharp.Data.TypeProviders.DesignTime.DataProviders' hat einen Fehler gemeldet: Fehler beim Lesen des Schemas. Fehler 7001: Der Provider hat es getan gibt keine ProviderManifestToken-Zeichenfolge zurück. Ein netzwerkbezogenes oder Beim Herstellen einer Verbindung mit ist ein instanzspezifischer Fehler aufgetreten SQL Server. Der Server wurde nicht gefunden oder war nicht erreichbar. Überprüfen dass der Instanzname korrekt ist und für den SQL Server konfiguriert ist Remote-Verbindungen zulassen (Anbieter: Named Pipes Provider, Fehler: 40 - Konnte eine Verbindung zu SQL Server nicht öffnen) Der Netzwerkpfad war nicht gefunden
Ich verstehe immer noch nicht, warum es nach SQL Server sucht.
Bitte lassen Sie mich wissen, wenn weitere Informationen erforderlich sind.
Ich werde eine Teilantwort posten, in der Hoffnung, dass jemand herausfinden kann, wie man das nächste Bit macht.
Der folgende Code wird kompiliert:
%Vor% Für eine Tabelle test_table
in der Datenbank testdb
erstellt über
Dazu müssen Sie vier Dinge tun:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\x64\gacutil.exe" /i [filename]
) "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config"
): das ist das Gleiche, das Sie in Ihrer app.config haben, aber hinzugefügt zu dem entsprechenden Abschnitt in machine.config, meins hat einen Eintrag im Moment für Microsoft SQL Server Compact Data Provider
. Denken Sie daran, das richtige öffentliche Schlüsseltoken einzubeziehen. %Vor%
Jetzt wird SqlEntityConnection
zur Entwurfszeit kompiliert und Sie können alle verfügbaren Tabellen sehen. Dies wird auch gerne in eine ausführbare Datei kompilieren.
Das beantwortet Ihre Frage; aber jetzt für das komische Stück, das bedeutet, dass du immer noch nicht glücklich bist. Wenn Sie diesen Code ausführen, wird ein ArgumentException
ausgelöst, sobald dbSchema.GetDataContext()
aufgerufen wird und sagt:
Die angegebene Verbindungszeichenfolge sollte entweder eine gültige anbieterspezifische Verbindungszeichenfolge oder eine vom EntityClient akzeptierte gültige Verbindungszeichenfolge sein.
Die inneren Ausnahmezustände
Das Schlüsselwort 'server' wird nicht unterstützt.
mit Stack-Trace
at System.Data.EntityClient.EntityConnectionStringBuilder.set_Item (String-Schlüsselwort, Objektwert) bei System.Data.Common.DbConnectionStringBuilder.set_ConnectionString (String-Wert) bei System.Data.EntityClient.EntityConnectionStringBuilder..ctor (String connectionString) bei SqlEntityConnection1.dbSchema.GetDataContext ()
Ich habe versucht, die Verbindungszeichenfolge zu deaktivieren, damit sie funktioniert, aber ich denke, dass dies ein Fehler sein muss, wenn der Provider die Verbindungszeichenfolge zur Laufzeit oder zur Entwurfszeit erstellt. Da dieser Code in einer dynamischen Assembly ausgegeben wird, ist es nicht offensichtlich, wie Sie den Code betrachten können, um zu sehen, was vor sich geht.
Ich habe die gleiche Schwierigkeit. Dies wird behoben, indem dies in der Datei App.config hinzugefügt wird:
%Vor%
Tags und Links f# postgresql type-providers f#-3.0 npgsql