实体框架代码的SQL Server Compact 4.0连接字符串
本文关键字:连接 字符串 Compact Server 框架 代码 SQL 实体 | 更新日期: 2023-09-27 18:27:03
我正在为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" />
错误:
此操作需要连接到"master"数据库。无法创建到"master"数据库的连接,因为原始数据库连接已打开,并且凭据已从连接字符串中删除。提供未打开的连接。
在我的一个项目中,我使用了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"是一个有效的提供程序,因为我使用的是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