如何在 C# 中连接到 .sdf 本地数据库文件

How do I connect to a .sdf local database file in C#

我正在使用本地 SQL 服务器 CE 数据库文件 (.sdf) 和 Entity Framework 来完成我的任务。

我已经创建了我的模型,现在 entity framework 应该将它们映射到本地数据库。

我的 Main 方法中有这段代码,该代码将一些数据插入数据库(以检查):

var db = new Context()
var blog = new Blog { Name = 'FirstBlog'};
            db.Blogs.Add(blog);
            db.SaveChanges(); 

这是我的连接字符串:

<connectionStrings>
   <add name="Connection" 
        connectionString="Data source=|DataDirectory|\LocalDB.sdf&quot;" 
        providerName="System.Data.EntityClient" />
</connectionStrings>

当我 运行 这个时,我得到这个错误:

Format of the initialization string does not conform to specification starting at index 0.

我尝试了几个连接字符串,但 none 成功了。

我该如何解决这个问题?

更新:

按照建议,我将连接字符串更改为:

<connectionStrings>
   <add name="Connection" 
        connectionString="provider=System.Data.SqlServerCe.4.0;provider connection string=&quot;Data source=|DataDirectory|\LocalDB.sdf&quot;" 
        providerName="System.Data.EntityClient" />
</connectionStrings>

但这给了我以下错误:

Some required information is missing from the connection string. The 'metadata' keyword is always required.

您的连接字符串中缺少 Server=(localdb)\v11.0 以指示它是 LocalDB 连接。 除此之外,您的连接字符串中还有 &quot 应该删除。

有关您的连接字符串的完整详细信息,请参见此 MSDN 页面。

可以找到连接字符串的示例 here(向下滚动到

我认为这是一个 Sql 服务器压缩文件,因此您的提供者需要是 System.Data.SqlServerCe 个提供者之一。

首先安装这个 EntityFramework.SqlServerCompact nuget 包,然后像这样设置你的连接字符串:

<connectionStrings>
    <add name="connection" connectionString="Data Source=|DataDirectory|\TestDb.sdf"
      providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>

**注意:**默认情况下 entity framework 将创建 TestDb.sdf 如果它不存在于 您解决方案 \bin\Debug 目录,部署后它将位于 C:\Users\YourUserName\AppData\Roaming 这个目录

<connectionStrings>
    <add name="MyCS" connectionString="Data Source=|DataDirectory|\Database1.sdf"
      providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>