2017-05-10 11 views
0

私はEFでしばらく働いていましたが、私は常にLocalDbを使ってデータを保存してきました。代わりにSQL Serverデータベースを使用して作業を始めたいのですが、接続文字列を設定する際に問題があります。Entity FrameworkとSQL Serverデータベース接続文字列

https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#sse https://www.connectionstrings.com/

とGoogleの上に見えたが、答えのどれも私が何か間違ったことしなければならないので、それは私の場合で働いて行われていない(接続文字列の一部が例外他はなかったではないでしょう投げますEF &のSQL Serverで作業するとき、私はAppDomain.CurrentDomain.SetData("DataDirectory", path);を使用してコンテキストのCTOR(中DBのパスを設定App.config &内の接続文字列の両方を使用する必要があり、どちらもデータベース)

私の質問があるのどちらかに何かを挿入)またはapp.configで十分ですか?

私は、次の接続文字列を試してみました:

Data Source=.\GURUBEAST-PC\GURUSQL;Initial Catalog=iManager;Trusted_Connection=True;MultipleActiveResultSets=True; 

Data Source=.\GURUBEAST-PC\GURUSQL;Database=iManager;Integrated Security=True;Trusted_Connection=True;MultipleActiveResultSets=True; 

Data Source=.\GURUBEAST-PC\GURUSQL;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.GURUSQL\MSSQL\DATA\iManager.mdf;Database=iManager;Trusted_Connection=True;MultipleActiveResultSets=True; 

Data Source=.\GURUBEAST-PC\GURUSQL;AttachDbFilename=C:\Program Files\Microsoft SQL Server\MSSQL11.GURUSQL\MSSQL\DATA\iManager.mdf;Database=iManager;Trusted_Connection=True; 

Data Source=.\GURUBEAST-PC\GURUSQL;Database=iManager;Trusted_Connection=True; 

Data Source=.\GURUBEAST-PC\GURUSQL;Initial Catalog=iManager;Integrated Security=SSPI; 

Data Source=.\GURUBEAST-PC\GURUSQL;Initial Catalog=iManager;User id=GURUBEAST-PC\GuruBeast; 

「iManagerが」データベースの名前です。私は自分のSQL Serverインスタンスに対してWindows認証を使用します。

私は間違っていますか?プログラムファイルフォルダまたはApp_Dataへのパスを設定する必要があります(私は両方見たことがありますが両方を試しましたが、どちらもうまくいきませんでした)。

大切にしてください!

+1

PC名を繰り返すことなくこれらのショートカットにインスタンス名を追加します。データソースは、ローカルPCに指している場合

は、ローカルPCを表現するために多くのショートカットを使用することができますそれぞれのデータソースキーの先頭にあるものですか? HOST \ INSTANCEの名前を指定するときは、このオプションは必要ありません。 Sql Server Management Studioを使用してこれらのホスト名を試しましたか? – Steve

+0

あなたはちょうど私の日を大切にしました! GURUBEAST-PC \ GURUSQL; AttachDbFilename = C:¥Program Files¥Microsoft SQL Server¥MSSQL11.GURUSQL¥MSSQL¥DATA¥iManager.mdf; Database = iManager; Trusted_Connection = Trueこの接続文字列を使用して、 ; MultipleActiveResultSets = True;そしてそのトリックをしました。しかし、なぜ私は "./"を使用してはならないのですか? SSMSを使うと "GURUBEAST-PC \ GURUSQL"を "./"なしで使用するだけなので意味がありません。どうもありがとうございます ! –

+0

あなたの回答を匿名としてマークできないのはなぜですか? –

答えて

1

データソースキーは、Sql Serverインスタンスが実行されているマシンを見つけるために使用されます。
異なる文字列を使用することもできますが、LAN環境で最も一般的に使用されるのは、サーバーマシンの名前のあとに最終的なインスタンス名を使用して作成されます。ローカルPCがGURUBEAST-PCの名前とされている場合

ので、インストール時に、あなたが任意のインスタンス名を指定していない、のConnectionStringデータソースは、マシンGURUBEAST-PCの名前のみが含まれています。インスタンス名がある場合は、そのインスタンス名をデータソースキーに追加する必要があります。 GURUBEAST-PC \ GURUSQL

これは、同じLAN内のすべてのPCの接続がSQL Serverが実行しているのと同じPCから作られている場合も同じたconnectionStringを持っている可能性を保証します。

(LOCAL) 
localhost 
. 
\. 

、最終的にどのような

+0

ああ、それは完全に今、説明と説明! –

1

ホスト名がわかると、Entity Frameworkによって接続文字列が生成されます。次に、sql2014という名前のSQL Server 2014のローカルインスタンスでホストされているAdventureWorksデータベースに接続しようとした場合の接続文字列のサンプルを示します。

<connectionStrings> 
    <add name="AdventureWorksEntities" connectionString="metadata=res://*/DataModels.AdventureWorksDb.csdl|res://*/DataModels.AdventureWorksDb.ssdl|res://*/DataModels.AdventureWorksDb.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\sql2014;initial catalog=AdventureWorks;persist security info=True;user id=App_AdventureWorks;password=asdasdfasdfasdf;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> 
</connectionStrings> 

あなたのデシベルコンテキストは、その後this.Againようになり、EFはあなたのためにこれを生成します。

public partial class AdventureWorksEntities : DbContext 
{ 
    public AdventureWorksEntities() 
     : base("name=AdventureWorksEntities") 
    { 
    } 
+0

".csdl .ssdl&.msl"ファイルは何であるか分かりませんが、私の解決策ではないし、エラーメッセージも表示されません。彼らはEFのためのshemasですか?私はそれらを実際に使ったことはありません。私は常にプログラムですべてを作成します。あなたのお手伝いをしてくれてありがとうございました。そしてスティーブに感謝します。(あなたの答えは実際に私の問題を解決しました。私はあなたの答えに印をつけますが、私はapperently ...できません...) –

関連する問題