SQL Server Express的代码优先操作系统错误

本文关键字:操作 系统错误 代码 Server Express SQL | 更新日期: 2023-09-27 18:16:52

我试图生成一个SQL Server Express嵌入式数据库(.mdf)与代码优先实体框架。它以前工作得很好,但现在,我只是一遍又一遍地犯同样的错误,我无法识别问题。问题发生在初始化时,它会永远挂起如果你看智能表你会看到一些throw/catch语句的循环都返回

"无法打开物理文件"c:'gt'aspnetdb.mdf"。操作系统错误2:"2(未能检索此错误的文本。原因:1815"。无法附加文件"c:'gt'aspnetdb"。Mdf"作为数据库‘WikDb’。"(System.Data.SqlClient.SqlException)

更新在"无法打开物理文件...."之前,我也得到了以下错误

列'InvariantName'必须是唯一的。价值"System.Data。SqlClient'已存在

更新结束

这是我的app.config

<configuration>
   <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"/>
      </DbProviderFactories>
   </system.data>
   <connectionStrings>
      <add name="WikDb"
           connectionString="data source=.'SQLEXPRESS;Integrated Security=True;
                       database=WikDb;AttachDBFilename=c:'gt'aspnetdb.mdf;
                       User Instance=True"
           providerName="System.Data.SqlClient" />
   </connectionStrings>
</configuration>

这里是初始化代码

Database.SetInitializer(new DbInitializer()); //DropCreateDatabaseAlways<WikDb> intializer
Database.DefaultConnectionFactory.CreateConnection( "WikDb" );
WikDb db = new WikDb();
db.Database.Initialize( true );

感谢您的帮助

谢谢你,

SQL Server Express的代码优先操作系统错误

似乎你的SQL Server实例坏了。这种情况往往发生在经常安装额外实例的时候——如果使用Express版本,也就是说,完整版本更容易安装和维护(如果你相信google——或者我的个人经验:P)。查看这种情况的最佳方法是在另一台具有工作SQL Server实例的机器上运行应用程序。您可以使用SSMS (SQL Server Management Studio)连接到数据库吗?如果没有,请尝试重新安装SQL Server。

更多信息:

  • http://www.ureader.com/msg/11614770.aspx
  • http://www.bigresource.com/Tracker/Track-ms_sql-UCk3FgDP/

编辑:我发现SQL Server Express工作最好,如果运行一个默认实例(一个名为SQLEXPRESS),其他一切给我麻烦,可能只是我虽然。