ASP.NET MVC 3,SQL Server:表未显示在资源管理器中,但它们在那里



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

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

根据我从MSDN上的技术胡言乱语中了解到的情况,这可能是权限或所有权问题。我不知道权限,因为我可以连接到数据库并查询它和编辑/删除记录。所以也许是所有权;我在某个地方读到,不属于dbo的表可能不会显示。但如果是这样的话,我不知道我的应用程序的所有权名称是什么,也不知道如何使Management Studio甚至服务器资源管理器显示其他用户拥有的表。

这是连接字符串,以防答案在那里:

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

感谢任何能为我指明正确方向的人!

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

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

表没有显示的原因当然是因为它们不在.mdf中。正如我在一条评论中所指出的,我在SQL Server选择的其他位置找到了它们。

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

另一个问题是,SQL Server的网络服务无权在C:\Users\Me文件夹或Documents and Settings文件夹中执行任何操作,除非您转到该文件夹并直接将权限分配给网络服务。然后,也只有到那时,您才能将数据库连接到SQL Server Management Studio。即使在Visual Studio安装SQL Server时也是如此。。。然后拒绝其访问VS保存其自己项目的文件的权限。我不明白;IMO任何意识到这一点的开发人员,为了完成她的工作,她要做的第一件事就是无论如何都要给予网络服务许可。

检查配置中的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,则将Database=StudentDb;

或者

最新更新