0

我是 MVC 3 的新手,并且学习了很多很酷的教程。热爱设计模式并享受生产力的提升。

我现在遇到的问题之一是我使用内置数据库来处理大多数教程中许多基本 MVC 应用程序背后的登录。我现在需要更改以访问现场制作系统的登录详细信息,但找不到在哪里做。

我最初教的是像更改连接字符串一样简单,但生产数据库与组成的示例完全不同。

对我来说,模型/控制器从哪里获取数据并不明显。例如,模型/控制器在哪里检索用户名或比较密码。如果我知道这一点,那么我可以更改我的解决方案以指向正确的数据库/表/字段。

此外,我的真实数据库是在 EF 中建模的,并且位于同一解决方案中的单独项目中。所以我有 MyProject.Data 和 MyProject.Web 最终会有 MyProject.Test 等。

这里的任何帮助将不胜感激。提前致谢。

编辑 1:真实数据库也有一个包含用户名和密码字段的登录表,就像 MVC 简单登录数据库一​​样。但是,数据库显然不像示例项目中那样是系统的一部分。相反,它位于服务器上等待访问。

我的问题是我不知道去哪里进行所需的更改。我在想这将是连接字符串,但这不起作用。即使是我得到的错误也只是让我回到连接字符串,而不是给我一行代码来查找。

4

1 回答 1

1

默认情况下,框架拉取与 DbContext 派生类同名的连接字符串。所以找一个和这个类一样的连接字符串。话虽如此,此连接字符串与默认表单实现完全无关,因为它从 web.config 的成员资格部分中标识的连接字符串中提取。这应该看起来像这样:


<membership>
  <providers>
    <clear/>
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices"
         enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
         maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
         applicationName="/" />
  </providers>
</membership>

在那里,您会看到已识别的 connectionStringName。您当然可以简单地更改它,但如果您已经有一个现有的数据库,则很可能结构不正确。

Henk 的评论很可能是正确的,因为您将希望创建自己的成员资格提供程序(只需创建一个类并从 MembershipProvider 继承并实现 CreateUser、GetUser、ValidateUser 和 ApplicationName(或者我认为))。您需要确保注册此提供程序以代替 AspNetMembershipProvider。一旦你这样做了,你应该会看到断点在你的提供者上被击中,并根据你的需要为你的数据库/AD/...简单地实现它

于 2012-05-16T03:22:19.397 回答