【问题标题】:MVC3 connection string with Entity Framework带有实体框架的 MVC3 连接字符串
【发布时间】:2011-12-20 01:01:14
【问题描述】:

由于我一直在关注 MusicStore 教程,新的 MVC3 项目为我创建了以下连接字符串:

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />

我的模型表是在 .\SQLEXPRESS 中创建的,所有用户/角色表都存储在 App_Data 文件夹中的 aspnetdb.mdf 中。 我想在我的 .\SQLSERVER 或 localhost 上有模型表和用户/角色表,而不是分散在 .\SQLEXPRESS 和 mdf 文件之间。我正在努力使用正确的连接字符串。有人可以推荐合适的吗?

执行此操作的每个人都必须确保连接字符串的名称应该是派生自 *DbContext*

的上下文类的名称

【问题讨论】:

  • 你可以试试:
  • @Akhil,但我在初始目录中使用什么?数据库还没有,它需要在应用程序第一次运行时由 EF 创建。我试过: 并得到以下异常通过 asp.net:无法打开登录请求的数据库“Learn1”。登录失败。用户“msi-PC\msi”登录失败。
  • 在这种情况下,您不需要 InitialCatalog 和 App=EntityFramework 部分。排除他们两个都有效吗?
  • @Akhil,使用: 错误:不能找到存储过程“dbo.aspnet_CheckSchemaVersion”。

标签: asp.net asp.net-mvc-3 entity-framework


【解决方案1】:

听起来您需要在 ApplicationServices 数据库上运行 aspnet_regsql。您可以在 C:\Windows\Microsoft.Net\Framework\4.xxx\aspnet_regsql.exe 中找到它。

默认项目使用 ApplicationServices db 作为成员资格、角色和配置文件的默认值。 sproc dbo.aspnet_CheckSchemaVersion 是 ASP.NET SQL Membership Provider 架构中的一个 sproc。

回复评论 #1

您的机器上是否有一个名为 SQLSERVER 的数据库实例正在运行?您提到的异常是常见的,如果 asp.net 无法使用您的连接字符串找到数据库。

回复评论 #2

这是有道理的。 Integrated Security=true 告诉连接使用运行 MVC 应用程序(通常是 IIS 应用程序池)的进程进行 sql server 登录。如果您正在从 Visual Studio / Web Developer Express / 等进行测试,则 Web 服务器可能正在使用您的 Windows 帐户的进程上运行。因此,如果您可以对数据库服务器进行 Windows 身份验证,MVC 应该也可以。

User Instances are meant for SQLEXPRESS

【讨论】:

  • 我在 sqlexpress 上运行了 aspnet_regsql,它很好地创建了成员表。现在,我尝试简单地从 .\SQLEXPRESS 更改为 .\SQLSERVER 并在断开 SQLEXPRESS 时出现以下错误:建立与 SQL Server 的连接时发生网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供程序:共享内存提供程序,错误:40 - 无法打开与 SQL Server 的连接)。
  • 我可以使用 Windows 身份验证从 Management Studio 连接到 .\SQLSERVER,甚至在那里创建了一个同名的数据库。但是此连接字符串不起作用: ,而对于 .\SQLEXPRESS 工作正常:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多