aspnetdb.mdf来自我的ASP.NET MVC应用程序在哪里?

Eri*_*tas 5 sqlmembershipprovider sql-server-express asp.net-mvc-3

我是ASP.NET的新手,刚刚开始学习ASP.NET MVC 3.我使用默认模板启动了一个新的ASP.NET MVC 3项目,该模板已经配置了大部分成员资格.现在我正试图了解幕后的真实情况.

我发现默认模板定义了一个IMembershipService接口,该接口由AccountMembershipService类实现,它基本上只包装System.Web.Security.MembershipProvider.从代码中的注释听起来像这样的抽象是为了便于单元测试.

默认的MembershipProvider在Web.config文件中设置.我的项目是从默认模板创建的,它被设置为SqlMembershipProvider.

<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>
Run Code Online (Sandbox Code Playgroud)

它引用Web.config文件中的连接字符串,该文件引用SQL Express数据库"aspnetdb.mdf".

  <connectionStrings>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

当我第一次创建项目时,没有aspnet.mdf文件.但在运行我的应用程序并注册新用户后,此文件自动生成表格和所有.这里发生了什么?是什么创建了这个文件并指定了应该创建的表?

Rob*_*evy 2

它们是由 SqlMembershipProvider 类创建的。如果您愿意,您可以自定义配置文件以使用不同的成员资格提供程序或告诉它要使用哪个现有数据库。

使用此工具将适当的表等添加到现有的 SQL Server 安装中:http://msdn.microsoft.com/en-us/library/ms229862 (v=VS.100).aspx