繁体   English   中英

实体框架代码的SQL Server Compact 4.0连接字符串首先?

[英]SQL Server Compact 4.0 connection string for Entity Framework code first?

我正在为Windows XP创建一个应用程序,所以我坚持使用.Net framework 4.0。 我首先尝试使用SQL Server Compact和EF代码,但在update-database时出错。

我希望将数据库放在我的代码目录中以部署在客户机器中。

这是我的连接字符串:

<add name="QuanLyKhoContext" 
     connectionString="Data Source=MyData.sdf;Persist Security Info=False;AttachDBFileName=MyData.sdf" 
     providerName="System.Data.SqlClient" />

而错误:

此操作需要连接到“主”数据库。 无法创建与“主”数据库的连接,因为已打开原始数据库连接并且已从连接字符串中删除凭据。 提供未打开的连接。

在我的一个项目中,我使用了SQL Server Compact 4.0,我的连接字符串很简单:

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

我认为你应该检查你的providerName 我不确定System.Data.SqlClient是否正确。

你安装了EntityFramework.SqlServerCompact NuGet包吗? 一旦安装,就会添加System.Data.SqlServerCe.4.0提供程序名称 ,并且应该在连接字符串中使用它。

检查是否已将SqlServerCompact提供程序添加到web.config

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlCeConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="System.Data.SqlServerCe.4.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="System.Data.SqlServerCe.4.0" type="System.Data.Entity.SqlServerCompact.SqlCeProviderServices, EntityFramework.SqlServerCompact" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>
  </system.data>

要防止这种情况,您需要更改连接字符串以使其具有:

 Trusted_Connection=False;Persist Security Info=True

基于以下链接

http://jayhollingum.blogspot.in/2011/03/ef-codefirst-databasesetinitializser.html

经过多次搜索,我决定转向SQL compact的近距离接近,它是LocalDB。 我改变它,这项工作:

<add name="QuanLyKhoContext" connectionString="Data Source=(LocalDB)\v11.0;
AttachDbFilename=|DataDirectory|MyDB.mdf;Integrated Security=True;Connect Timeout=60" providerName="System.Data.SqlClient" />

我认为“System.Data.SqlClient”是一个有效的Provider,因为我使用的是Sql Express LocalDB :)这不是我的第一个目的,但无论如何它都可以工作。 谢谢大家

我只是不知道什么时候在Windows XP中部署,我需要手动安装Sql Express或Sql Compact的东西吗?

根据MSDN文档,您可以使用以下内容:

<add name="ConnectionStringName"
    providerName="System.Data.SqlServerCe.4.0"
    connectionString="Data Source=|DataDirectory|\DatabaseFileName.sdf" />

PS: 如何安装SQL Server Compact

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM