2017-08-18 3 views
2

Ich verwende die FSharp.Data.SqlClient SQL-Typ-Provider, und ich wollte wissen, ob es eine Möglichkeit gab, das Datenbankschema lokal zu speichern.Gibt es eine Möglichkeit, Schema lokal für F # SQL TypeProviders zu speichern?

Für andere Anbieter wie JSON oder YAML können Sie ein Beispiel lokal speichern, sodass der Typanbieter die "Form" der eingehenden Daten kennt. Ich wollte das Gleiche für den SQL-Typ-Provider tun.

Ja, mir ist klar, dass das bedeuten würde, jedes Mal, wenn es eine Änderung im Schema gibt, das lokale Speichern zu regenerieren.

+1

Die Antwort ist keine https://github.com/fsprojects/SQLProvider/issues/178 – xuanduc987

+2

@ xuanduc987 Das ist ein anderer Typ Anbieter :) Aber FSharp.Data.SqlClient kann auch nicht. Sql.Data.TypeProviders.SqlDataConnection/SqlEntityConnection kann jedoch. – Tarmil

Antwort

1

Verschiedene Anbieter haben unterschiedliche Fähigkeiten. und SQLProvider können derzeit dies nicht tun. Aber die (früher eingebaut) FSharp.Data.TypeProviders ‚s SqlDataConnection und SqlEntityConnection können:

open FSharp.Data.TypeProviders 

type MyDb = SqlDataConnection<connectionString, 
       LocalSchemaFile = "mydb.dbml", 
       ForceUpdate = false> 

Dies wird das Schema in der mydb.dbml Datei speichern, und die anschließende compiliert wird es von dort laden, anstatt auf die Datenbank zu verbinden. Wenn Sie die Datei aktualisieren müssen, weil sich das Schema geändert hat, setzen Sie einfach ForceUpdate auf true, kompilieren Sie sie erneut und setzen Sie sie zurück auf false. Sie können die Datei dbml festschreiben, und die Benutzer können das Projekt ohne Zugriff auf die Datenbank kompilieren.

Verwandte Themen