我正在尝试使用代码优先的实体框架生成SQL Server Express嵌入式数据库(.mdf).它过去工作正常,但现在,我只是反复出现同样的错误,我无法确定问题.问题发生在初始化,它只是永远挂起,如果你看intellitrace你可以看到某种循环的throw / catch语句全部返回
“Unable to open the physical file “c:\gt\aspnetdb.mdf”. Operating
system error 2: “2 (failed to retrieve text for this error. Reason:
1815”. Cannot attach the file “c:\gt\aspnetdb.mdf” as database
‘WikDb’.” (System.Data.SqlClient.SqlException)
UPDATE
我现在也在“无法打开物理文件……”之前收到以下错误.
Column ‘InvariantName’ is constrained to be unique. Value
‘System.Data.SqlClient’ is already present.
结束更新
这是我的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版本,完整版本更容易安装和维护(如果您相信谷歌 – 或我的个人经验: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/
编辑:我发现如果运行一个默认实例(名为SQLEXPRESS的那个),SQL Server Express效果最好,其他一切都给我带来麻烦,可能只是我.