4

我在实体框架中使用 Code First 概念,并且在启动应用程序时不断收到以下异常:

Cannot attach the file 'C:\Users\Admin\Documents\Visual Studio 2012\
Projects\Pro\Pro.Web\App_Data\Pro.mdf' as database 'Pro'.

我已经把它放进去了,Global.asax.cs但也没有成功:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ProWebContext>());
        var ctx = new ProWebContext();
        ctx.Database.Initialize(true);

我在 App_Data 目录下检查过,没有创建数据库。此外,在服务器资源管理器下,数据连接下没有任何内容。昨天一切正常,今天根本不工作。我尝试使用 SQL Server Management Studio 连接到 LocalDB,但它说它无法连接到本地数据库。任何想法可能是什么问题?

谢谢!

4

4 回答 4

5

我找到了解决方案。使用最新的 SQL Server Management Studio,连接到本地数据库没有问题。需要像这样建立连接:

在此处输入图像描述

登录后,我们仍然可以看到旧数据库存在,即使 App_Data 目录下和 Visual Studio 服务器资源管理器中的数据连接下没有任何内容。当我们从 SQL Server Management Studio 中删除该数据库并再次启动应用程序时,附加数据库时将不再出现错误。

于 2013-03-31T17:00:38.483 回答
1

我刚遇到同样的问题,但上面的答案有所帮助,解决方案不同。

就我而言,我正在重用一个已经创建了它的数据库的项目。而且由于配置中的名称相同,因此引发了异常,从而误导了真正的解决方案。

值得检查的是数据库没有被创建并且与你之前使用的不同。更改名称并继续。

于 2014-01-02T18:58:05.770 回答
0

当我看到这个时,我遇到了同样的错误,但我无法使用 SQL Server Management Studio 删除数据库,所以我记得IDatabaseInitializer

为我的 Code First 上下文设置数据库初始化程序解决了这个问题。在我的情况下,添加一个初始化程序以始终删除数据库工作(我在我的上下文的静态构造函数中添加了代码,大多数人在 Global.asax 中添加它):

    static SomeDbContext()
    {
        System.Data.Entity.Database.SetInitializer(new DropCreateDatabaseAlways<SomeDbContext>());
    }

当然还有其他初始化程序。

于 2013-10-20T19:30:30.043 回答
0

我手动删除了 mdf 文件,因此代码将再次重新创建它,并且遇到了同样的问题。我通过在包管理器控制台中运行 update-database 命令解决了这个问题。

于 2014-03-11T17:43:46.500 回答