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 回答