我试图生成一个SQL Server Express嵌入式数据库(.mdf)与代码优先实体框架。它以前工作得很好,但现在,我只是一遍又一遍地犯同样的错误,我无法识别问题。问题发生在初始化时,它会永远挂起如果你看智能表你会看到一些throw/catch语句的循环都返回
"无法打开物理文件"c:gtaspnetdb.mdf"。操作系统错误2:"2(未能检索此错误的文本。原因:1815"。无法附加文件"c:gtaspnetdb"。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:gtaspnetdb.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版本,也就是说,完整版本更容易安装和维护(如果你相信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),其他一切给我麻烦,可能只是我虽然。