0

我是新来的MVC 3,并通过了很多很酷的教程。热爱设计模式并享受生产力提升。与ASP.Net V3的连接字符串

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

我最初的教导就像改变连接字符串一样简单,但生产数据库完全不同于编制的例子。

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

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

在这里的任何帮助将大大appreicated。提前致谢。

编辑1:真正的数据库也有一个用户名和密码字段的登录表,就像MVC简单登录数据库。然而,数据库显然不是系统的一部分,就像示例项目中那样。而是坐在等待访问的服务器上。

我的问题是,我不知道要去哪里做出所需的更改。我想这将是连接字符串,但这是行不通的。即使我得到的错误只是指向连接字符串,而不是给我一行代码来查找。

+0

听起来像你需要一个(自定义)成员资格提供商。但是确定的细节太少了。 –

回答

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/...

+0

感谢您的回答,这确实有用。 –