応じ

1

現在、私のSQLデータベースが応じ

C:\Users\Slaven\KasaMP.mdf 

上で、私は私のプロジェクトのディレクトリに移動したい[多分、「データベース」フォルダ(?)]接続文字列を正しく変更してください。 私の目標は、任意のコンピュータに添付された.mdfファイルでこのプロジェクトを開くことです。現在のConnectionString私はEntityFrameworkを生成していますが、このCSポイントを別の場所にする方法は何か分かりません。

のConnectionString:

<connectionStrings> 
    <add name="KasaMPEntities" connectionString="metadata=res://*/OsnovniPodaci.Model.csdl|res://*/OsnovniPodaci.Model.ssdl|res://*/OsnovniPodaci.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(localdb)\v11.0;AttachDbFilename=|DataDirectory|\KasaMP.mdf;initial catalog=KasaMP;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" /> 
    </connectionStrings> 

私のプロジェクトパス:

C:\Users\Slaven\Documents\visual studio 2013\Projects\PCKasa\KasaMP 

私は他の記事では、この次の行を見つけましたが、私はそれが何をするかわからない:

AppDomain.CurrentDomain.SetData("DataDirectory", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Database")); 

I私はこの属性をConnectionStringのどこかに置かなければならないことを知っています

AttachDbFileName=|DataDirectory|\KasaMP.mdf 

これを正しく行う方法についてのご意見はありますか?^^

答えて

1

WinFormsアプリケーションでは、DataDirectory置換文字列は、アプリケーションが起動するフォルダを指します。 Visual Studioセッションの場合、このフォルダーはBIN \ DEBUGまたはBIN \ RELEASEフォルダー(おそらくx86の亜種)

これはVisual Studioでうまくいきますが、お客様のPCで変更することなくconfigの設定では、MDFが必要なフォルダはアプリケーションと同じです。
しかし、残念ながら、この場所には書き込み権限(C:\ program filesなど)がありません。任意のデータベースアプリケーションのための必須要件。

は、だからあなたの最善の策は、あなたがEnvironment.SpecialFolder.CommonApplicationData列挙 を使用して取得することができCommonApplicationDataフォルダにこのファイルを配置することです(通常はC:\はProgramDataのWindowsの最新バージョンで)

string folder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
string myAppFolder = Path.Combine(folder, "MyReservedAppDataFolder"); 
Directory.CreateDirectory(myAppFolder); 
AppDomain.CurrentDomain.SetData("DataDirectory", myAppFolder); 

このすべてはする必要がありますアプリケーションのデータアクセス関連のコードが始まる前に完了してください。 もちろん、設定を変更せずにそのまま残すことができます。

+0

ありがとうございましたが、私のSQL Server xDから.mdfの場所を変更する方法がわかりません – ChenChi

+0

私はこれを試しました:https://blog.sqlauthority.com/2012/10/28/sql-server- move-database-files-mdf-and-ldf-to-another-location /しかし、私はエラーの束を持っています – ChenChi

+1

私は理解していません。設定ファイルはLocalDbインスタンスを使用します。あなたの顧客がSql ServerまたはSql Server Expressのインストールされたインスタンスを使用していると教えていますか?その場合、接続文字列はまったく異なり、インストールされたSQL ServerのインスタンスにMDFファイルを追加する必要があります – Steve

関連する問題