ASP.NET MVC那里没有任何mdf文件......但是我的数据库仍然有用吗?

时间:2015-06-05 07:43:40

标签: sql-server visual-studio asp.net-mvc-5

我的网站有两个数据库,一个用于用户帐户,另一个用于内容。两者都是首先创建的代码,并且都包含数据。 但是我在项目中只有一个mdf文件。该站点在本地工作,内容显示,我可以编辑和添加,并且更改是有效的。我可以添加用户,他们的帐户也可以。但是我在项目中唯一的mdf文件是用户数据库。

我可以在sql server managment studio中连接到localdb并只获取用户数据库。没有数据库的结构和表格与内容数据库匹配。我可以在Visual Studio中转到服务器资源管理器,只有用户数据库显示在连接下。当然,我做了几次刷新我的解决方案资源管理器"显示所有文件"上。我甚至在我的计算机上的任何地方对所有mdf文件进行了完整的磁盘搜索,并且它没有找到适合该帐单的文件。

我试图在web.config中设置连接字符串(其中没有自动生成),因为我读到这可能会触发mdf文件的创建(尽管上下文总是一个空的数据库,并没有#39 ; t得到了创造),但所有带给我的是应用程序现在还没有找到数据库。恢复web.config中的更改并没有解决该问题,但是从svn还原整个项目的确没有。

数据库在开发过程中迁移了10次,始终没有错误。一切都很好,除了我无法在任何地方找到物理数据库。这当然是部署的问题。 我注意到在开发期间我在项目中只有一个mdf文件,但我当时并没有多想它。毕竟,一切都有效(现在仍然如此)。

ASP.NET MVC可以存储数据库的其他方法除了mdf吗?我在屏幕上看到的数据必须来自某个地方...但是我可以告诉所有数据,而不是来自mdf文件。

编辑:在恢复和重建之后,现在在web.config中生成了一个默认连接字符串。但是,它只是指向用户数据库,即我可以在App-Data文件夹中找到的文件:

connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-RAOC-20150430022043.mdf;Initial Catalog=aspnet-RAOC-20150430022043;Integrated Security=True" providerName="System.Data.SqlClient"

-----更多信息-----

我已经尝试了更多连接字符串。在将以下连接字符串添加到web.config时,最终创建了.mdf文件:

    <add name="RAOCentities" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\raoc.mdf;Initial Catalog=aspnet-raoc;Integrated Security=True" providerName="System.Data.SqlClient" />

然而,正如预期的那样,它没有包含内容,所以我得到了一个空引用异常。从web.config中删除连接字符串可以恢复旧功能。因此,它归结为真正的问题是:该内容存储在哪里?以及如何将其放入mdf?

-----更多信息-------

经过一些实验,内容数据确实存储在用户数据库中的结论似乎是不可避免的。如果我根据svn dif更改内容,至少这似乎是唯一的文件。但我无法在sql server管理工作室中看到这些表。我只能看到用户数据库中的表(您的默认applicationdbcontext),而不是我自己的实体。然而,一切都指向数据存在于某处的事实。任何人都有任何想法如何可能?

1 个答案:

答案 0 :(得分:0)

嗯,我仍然处于不明朗状态,以及这两个数据库如何存在于同一个文件中,而SQL-server管理器只看到其中一个,但ASP.NET显然能够同时访问这两个数据库,但至少我解决了这个问题。

如果有人发现自己遇到同样的问题,那就是我所做的:

我在另一个类名下复制了数据库模型,并为其设置了一个连接字符串。这样做会导致输出一个空数据库,并将正确的表作为mdf文件,同时不会破坏与不可用数据库的连接以及其中的实际数据。然后我运行了一个简短的函数,将填充的数据库的内容复制到空的数据库中,删除重复的类并设置连接字符串以将现在填充的mdf与原始数据库模型连接起来。结果:我可以实际发布一个工作数据库。