Asp.net mvc 3 ASP.NET MVC 3,SQL Server:表未出现在资源管理器中,但它们';你在那儿吗

Asp.net mvc 3 ASP.NET MVC 3,SQL Server:表未出现在资源管理器中,但它们';你在那儿吗,asp.net-mvc-3,entity-framework,sql-server-2008-r2,ssms,server-explorer,Asp.net Mvc 3,Entity Framework,Sql Server 2008 R2,Ssms,Server Explorer,我的数据库存储在App_数据中的.mdf中,运行正常。我的应用程序可以添加、编辑、删除记录 但是桌子是看不见的。当我打开服务器资源管理器并附加.mdf并尝试查看表时,其中没有列出任何表。我也将该文件附加到了SQL Server Management Studio,但在那里显示的表只有文件夹系统表中的表 从我从MSDN上的Technobable中收集到的信息来看,这可能是一个权限或所有权问题。我不知道权限,因为我可以连接到数据库,查询它,编辑/删除记录。所以可能是所有权;我在某个地方读到,dbo不

我的数据库存储在App_数据中的.mdf中,运行正常。我的应用程序可以添加、编辑、删除记录

但是桌子是看不见的。当我打开服务器资源管理器并附加.mdf并尝试查看表时,其中没有列出任何表。我也将该文件附加到了SQL Server Management Studio,但在那里显示的表只有文件夹
系统表中的表

从我从MSDN上的Technobable中收集到的信息来看,这可能是一个权限或所有权问题。我不知道权限,因为我可以连接到数据库,查询它,编辑/删除记录。所以可能是所有权;我在某个地方读到,
dbo
不拥有的表可能不会显示。但如果是这样,我不知道我的应用程序的所有权名称是什么,也不知道如何让ManagementStudio甚至服务器资源管理器显示其他用户拥有的表

以下是连接字符串,以防答案在其中:

<add name="EFDBContext" connectionString="Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=|DataDirectory|MLDatabase.mdf;Database=EFDbContext;User Instance=true" providerName="System.Data.SqlClient"/>

似乎是一个类似的问题,但我不知道那里的解决方案是否适用,因为我的数据库不是由脚本生成的,而是由实体框架(代码优先模型)生成的。

我遇到了类似的问题。我编写了数据库备份的脚本,将其添加到mssql服务器,并将我的ConnectionString指向新的数据库

这些表没有出现的原因当然是因为它们不在.mdf中。正如我在评论中指出的,我在其他地方找到了它们,在SQLServer选择的位置

解决方法是让EF在需要的地方构建SQL Server数据库,停止SQL Server服务,将其移动到App_数据文件夹,适当更改连接字符串,然后将其附加到ASP.NET项目


另一个问题是。例如,只有这样,您才能将数据库连接到SQLServerManagementStudio。即使Visual Studio安装SQL Server时也是如此。。。然后拒绝它访问VS保存自己项目的文件的权限。我不明白;在任何知道这一点的开发人员看来,为了完成工作,她要做的第一件事就是授予网络服务该权限。

检查配置中的defaultConnectionFactory类型。我希望它设置为LocalConnectionFactory,因为这似乎是默认设置

将其更改为以下内容,将使用您的SQL实例

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
  <parameters>
    <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
  </parameters>
</defaultConnectionFactory>


数据库应以与命名空间匹配的名称出现在SQL Management Studio(SQLMS)中。

请不要担心。只需在Web.config文件中相应地重新配置连接字符串: -从服务器名称中删除“\SQLEXPRESS”后缀; -删除“User Instance=true”键/值对

如果DbContext类是StudentDbContext,则将数据库设置为StudentDb;


如果删除数据库并再次运行应用程序,会发生什么情况?它创造了它吗?如果删除连接字符串的
User Instance
部分,会发生什么情况?嗯,当我删除.mdf时,应用程序仍在运行。那不好。它在哪里存储我的数据!?毫无疑问,在SQL Express的迷雾中。这是怎么回事。。。我怎么可能不知道我的数据保存在哪个数据库中?唉,这就解释了为什么我看不到我的表,不管怎样……我在MSSQL/data中找到了我的数据。即使我将连接字符串中的
初始目录
更改为
App\u Data/MLDatabase.mdf
,它也会保持在那里。但这显然是我删除.mdf后它建立的数据库,因为行索引号不同。首先,您的连接字符串不正确。要使用本地文件,它必须在AttachDBFileName属性中定义文件路径,而不是在初始目录属性中定义文件路径。如果您不使用AttachDBFileName,它会直接在SQL Express上创建数据库-这就是您找到数据库的地方。当我进行一次更改时,会收到两条错误消息,或者可能是包含两部分的错误消息:数据库“C:\Users\Sabrina\AppData\Local\Microsoft\Microsoft SQL Server Data\SQLEXPRESS\EFDbContext.mdf”已经存在。请选择其他数据库名称。无法将文件“C:\Users\Sabrina\documents\visual studio 2010\Projects\HW3\HW3\App\u Data\MLDatabase.mdf”附加为数据库“EFDbContext”。我不确定如何在我的情况下应用该文件-数据库是由实体框架使用“代码优先”约定创建的-因此我根本没有编写脚本。谢谢你!在SQL Server Management Studio中右键单击数据库,选择任务,选择生成脚本,然后让指南为您创建备份scirpt。现在您有了一个用于创建新数据库的sql脚本。