0

SQL Server CE データベースをプログラムでバックアップしようとしています。明らかに、これにはデータベース ファイルのコピーが必要です。

私の最初の解決策は次のようになりました。

var connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString;
var efBuilder = new System.Data.EntityClient.EntityConnectionStringBuilder(connectionString);
var builder = new System.Data.SqlClient.SqlConnectionStringBuilder(efBuilder.ProviderConnectionString);

var src = builder.DataSource.Replace("|DataDirectory|", System.AppDomain.CurrentDomain.BaseDirectory);
var dest = @"C:\temp\backup.sdf";

// file-copy src to dest here

それから、それは私を襲った:私はここでフープを飛び越えて、とにかくエンティティフレームワークが内部的に行っている機能を複製するだけです(|DataDirectory|固定パスで置き換えることは言うまでもありません)。

それから私はこれを試しました:

using (var conn = entities.Database.Connection)
{
    // conn.Open();
    var path = conn.Database;
}

エンティティは私のコンテキストですが、それでも私にしか与えられません:|DataDirectory|\db.sdf

質問: SQL Server CE ファイルへの実際のパスを取得する適切な方法はあります|DataDirectory|か?

ありがとう!

4

1 に答える 1

1

SQL Server Compact 4.0 SP1 の完全なパスを解決するために使用される conn.Database プロパティのバグに直面しています。回避策として SqlCeReplication オブジェクトの SubscriberConnectionString を使用できます。次のブログ投稿を参照してください: http://erikej.blogspot.dk/2013/02/sql-server-compact-code-snippet-of-week_19.html

于 2013-05-13T17:31:37.067 に答える