我是ASP.NET的新手,还刚刚开始学习ASP.NET MVC3。我已经使用默认模板启动了一个新的ASP.NET MVC 3项目,该模板已经配置了大多数成员身份。现在,我试图了解幕后真正发生的事情。

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

在Web.config文件中设置了默认的MembershipProvider。我的项目是从默认模板创建的,它设置为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>

这引用了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>

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

最佳答案

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

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

关于asp.net-mvc-3 - ASP.NET MVC应用程序中的aspnetdb.mdf来自何处?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5684228/

10-13 02:34