to this questionでは、接続文字列を私たちのリポジトリにプッシュすることなく、同僚との接続文字列を共有する必要があります。 F#SQL型プロバイダを使用すると、コード内の接続文字列を「ハードコード」する必要があります。答えでの回避策が有望ですが、タイププロバイダなしでdBに接続する方法はありますか?SQL型プロバイダなしでSQLデータベースに接続しますか?
私は既にdBのスキーマ/構造を知っています。私が接続できる他の方法がありますか?
to this questionでは、接続文字列を私たちのリポジトリにプッシュすることなく、同僚との接続文字列を共有する必要があります。 F#SQL型プロバイダを使用すると、コード内の接続文字列を「ハードコード」する必要があります。答えでの回避策が有望ですが、タイププロバイダなしでdBに接続する方法はありますか?SQL型プロバイダなしでSQLデータベースに接続しますか?
私は既にdBのスキーマ/構造を知っています。私が接続できる他の方法がありますか?
一つの可能性はEdmxFileタイププロバイダを使用している:
#I "../packages/FSharp.Data.TypeProviders/lib/net40"
#r "System.Data.Entity"
#r "FSharp.Data.TypeProviders.dll"
open FSharp.Data.TypeProviders
type DB = EdmxFile<"MyDB.edmx">
let c = new DB.Model.ModelContainer("runtimeConnectionString")
query { for e in c.MyEntitySet do select e.Id }
あなたは新しい「ADO.NETエンティティデータモデル」を追加することにより、(既存のDBからか、最初から)のVisual StudioでEDMXファイルを作成することができます項目をC#プロジェクトに追加し、それをF#プロジェクトに移動します。デザイナの機能はF#プロジェクトで引き続き使用できます。
FSharp.Data.TypeProviders project内には、DBML file,SqlDataおよびSqlEntityタイプのプロバイダが存在する。後者の2つは、コンパイル時の接続文字列または名前を必要としますが、オフラインスキーマキャッシングをサポートするも必要です。したがって、キャッシュファイルをソースコントロールに追加し、接続文字列を変更することができます。あなたはプレーンなSQLを発行することに興味があるなら、見て
let [<Literal>] LocalMDF =
"Server=.\SQLExpress;AttachDbFilename=.\MyDataFile.mdf;Database=dbname;Trusted_Connection=Yes;"
:
別の方法としては、「ライブ」タイプのプロバイダのいずれかを使用することなく、ソース制御MDFファイルを指すようにしますタイププロバイダのSQL Client設計時に.config
ファイルを指定することができます。それとは別に
、全て「非型プロバイダ」(以下、便利、より少ないタイプセーフ)標準.NETアプローチも同様に使用することができる。
* F#SQL型プロバイダを使用すると、コード内で接続文字列を「ハードコード」する必要があります。*これは正しくありません。実行時にConnection Stringを渡すことができます。 – DaveShaw
@DaveShaw _data_接続文字列では、実行時に渡すことができます。しかし_shape_接続文字列はソースコードの定数でなければなりません。 –
実行時に接続文字列を変更するだけでいいですか、GitHubで接続文字列をpublicにしたくないのですか(設計時も実行時もありません)。接続ロジックを含むdllを作成し、repoをプッシュすることができます。型プロバイダを使用しない場合は、常にADOを使用して接続できます。 – s952163