C# 是否先为实体框架代码创建SQL Server Compact 4.0连接字符串?

C# 是否先为实体框架代码创建SQL Server Compact 4.0连接字符串?,c#,entity-framework,ef-code-first,sql-server-ce,connection-string,C#,Entity Framework,Ef Code First,Sql Server Ce,Connection String,我正在为Windows XP创建一个应用程序,因此我坚持使用.Net framework 4.0。我尝试先使用SQL Server Compact和EF代码,但在更新数据库时出错 我希望将数据库放在我的代码目录中,以便在客户机中部署 这是我的连接字符串: <add name="QuanLyKhoContext" connectionString="Data Source=MyData.sdf;Persist Security Info=False;AttachDBFileNam

我正在为Windows XP创建一个应用程序,因此我坚持使用.Net framework 4.0。我尝试先使用SQL Server Compact和EF代码,但在
更新数据库时出错

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

这是我的连接字符串:

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

错误是:

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


要防止出现这种情况,您需要将连接字符串更改为:

 Trusted_Connection=False;Persist Security Info=True
基于以下链接


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

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

在多次搜索之后,我决定转向接近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 Stuff?

根据需要,您可以使用以下方法:

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

查看一下-您的连接字符串无效,它应该类似于
数据源=MyData.sdf;持久安全信息=False(无
AttachDbFileName=
attribute或诸如此类的内容……)我不明白的是您是如何使用SQL Server提供程序的,但请以SQL Server Compact的形式提问。这些提供程序不可互操作。我尝试过,但它对我的不起作用,我不知道为什么:)很痛苦,我无法通过nuget安装SqlserverCompact试图解决依赖项“Microsoft.SqlServer.Compact”(≥ 4.0.8854.1)”。是的,至少应安装
Sql Server Express
,才能使用
LocalDB
。如果使用了
Sql Server Compact
,则无需安装其他软件。在应用程序文件夹中有
sqlserver Compact
相关
dll
s就足够了。
<add name="ConnectionStringName"
    providerName="System.Data.SqlServerCe.4.0"
    connectionString="Data Source=|DataDirectory|\DatabaseFileName.sdf" />