【问题标题】:.NET Entity Framework "remembering" database name that does not exist.NET 实体框架“记住”不存在的数据库名称
【发布时间】:2014-11-09 07:31:18
【问题描述】:

我正在使用 Brock Allen 的出色 MembershipReboot 库在我的 .NET 应用程序中提供身份服务。根据Getting Started with MembershipReboot,MembershipReboot 使用实体框架 (EF) 进行数据访问。

示例应用程序包含一个 SQL Server 数据库 MembershipReboot.mdf。我从这个数据库中导出了架构和数据,并将其导入到我的应用程序的数据库中(MyTestApp.mdf - 见下文)。

您可以看到 MembershipReboot.mdf 的来源,因为 MembershipReboot 附带的示例定义了以下连接字符串::

<add name="MembershipReboot" connectionString="Data Source=(LocalDb)\bla;Initial Catalog=MembershipReboot;Integrated Security=True" providerName="System.Data.SqlClient"/>

我为我的应用程序的数据库设置了以下连接字符串:

<add name="DefaultConnectionString" connectionString="Server=(LocalDb)\bla;AttachDbFilename=|DataDirectory|\MyTestApp.mdf;Initial Catalog=MyTestApp;Integrated Security=True" providerName="System.Data.SqlClient" />

直到最近,一切都很好。然后,在我的应用程序启动后,我开始间歇性地收到以下错误:第一次访问数据库时:

无法附加文件 'C:\Users\mkrieger\Google Drive\Projects\MyTestApp\MyTestApp\App_Data\MembershipReboot.mdf' 作为数据库 '会员重启'。

描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Data.SqlClient.SqlException:无法附加文件 'C:\Users\mkrieger\Google Drive\Projects\MyTestApp\MyTestApp\App_Data\MembershipReboot.mdf' 作为数据库 '会员重启'。

我对我的应用程序目录进行了全文搜索,然后对“MembershipReboot.mdf”的可执行文件和所有二进制文件进行了Strings 搜索,但结果为空。

我错过了什么?

【问题讨论】:

  • 您的配置文件中的连接字符串顶部是否有&lt;clear/&gt;
  • @Basic - 我没有,但我只是添加并正在尝试。但是如果 删除了对继承的连接字符串的引用,我不应该在我的文本搜索过程中找到罪魁祸首连接字符串吗?
  • 这取决于... 有多种方法可以指定字符串并且不熟悉相关库,这是最容易测试的方法。可能无法找到它的可能原因包括存储在外部文件/注册表中、动态构建的文件名 (String.Format("{0}.{1}", "MembershipReboot", extension)) 等等……再说一遍,并不是说它们很可能,只是排除了可能性
  • @Basic - 一件明确的事情是我曾经有一个指向 MembershipReboot.mdf 的“MembershipReboot”连接字符串条目。所以也许它被缓存在某个地方。
  • @Basic - 不走运。仅供参考,我在这里使用 LocalDb。当我禁用 LocalDb(例如通过重命名 .exe)时,应用程序失败,表明它无法连接到 LocalDb 实例。

标签: .net database entity-framework data-access membershipreboot


【解决方案1】:

Brock Allen 以前见过这个问题(这个问题与 MembershipReboot 或任何特定库无关)。

是的,我以前见过这个错误。这是当您删除 sql express 文件(mdf 等)但不从数据库服务器中删除数据库时——换句话说,您需要从 Sql Server Mgmt Studio 中或从 Visual Studio 中的 Sql Server 资源管理器中删除数据库.

这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多