【问题标题】:How do I connect to a .sdf local database file in C#如何在 C# 中连接到 .sdf 本地数据库文件
【发布时间】:2015-05-03 05:17:02
【问题描述】:

我正在为我的任务使用本地 SQL Server CE 数据库文件 (.sdf) 和实体框架。

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

我在我的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>

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

初始化字符串的格式不符合从索引 0 开始的规范。

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

我该如何解决这个问题?

更新:

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

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

但这给了我以下错误:

连接字符串中缺少一些必需的信息。 “元数据”关键字始终是必需的。

【问题讨论】:

    标签: c# .net entity-framework sql-server-ce connection-string


    【解决方案1】:

    首先安装此EntityFramework.SqlServerCompact nuget 包,然后将连接字符串设置为 somting,如下所示:

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

    **注意:**默认情况下,如果实体框架不存在,它将创建 TestDb.sdf 你的解决方案\bin\Debug 目录,部署后它将在C:\Users\YourUserName\AppData\Roaming 这个目录中

    【讨论】:

    • 感谢您的回答,但这给了我No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlServerCe.4.0'. 错误
    • 您也必须安装 EntityFramework....只需安装它,然后按照我提供的步骤操作,它应该可以工作
    • 我认为它正在工作,但我无法在任何地方找到 .sdf 文件:(DataDirectory 指向哪里?
    【解决方案2】:

    您的连接字符串中缺少Server=(localdb)\v11.0,表明它是一个LocalDB 连接。 除此之外,您的连接字符串中还有 &amp;quot 应该被删除。

    可以在MSDN 页面上找到有关连接字符串外观的完整详细信息。

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

    【讨论】:

    • 这是说Keyword not supported: 'server'. :(
    【解决方案3】:

    我认为这是一个 Sql Server Compact 文件,因此您的提供程序需要是 System.Data.SqlServerCe 提供程序之一。

    【讨论】:

      【解决方案4】:
      <connectionStrings>
          <add name="MyCS" connectionString="Data Source=|DataDirectory|\Database1.sdf"
            providerName="System.Data.SqlServerCe.4.0" />
        </connectionStrings>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多