3

我想问一个关于asp.net mvc 4.5 Internet应用程序附带的默认简单会员数据库的快速问题,我的问题是当我第一次创建新用户时它在哪里创建它的表它是否在默认连接中创建它的表字符串(本地数据库)?如果我将默认连接字符串更改为使用自定义 MS SQL Express 数据库会得到反映,并且这些表将在我的新数据库中创建?

我在默认帐户模型和其 DbContext 类中注意到此代码,它指的是默认连接,这是那里的代码:

public class UsersContext : DbContext
{
    public UsersContext() : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}
4

2 回答 2

2

SimpleMembership 在InitializeSimpleMemberhsipAttribute.cs类中初始化。

在默认的 MVC 4 Internet 项目模板中,导航到 Filters 目录,在上面的类中,您将找到初始化方法:

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile",
 "UserId", "UserName", autoCreateTables: true);

这是默认设置,如果您想将其指向不同的数据库,请执行以下操作:

WebSecurity.InitializeDatabaseConnection("MyContext", "TableToPointTo", 
"UserIdColumn", "UserNameColumn", autoCreateTables: false);

在您的上下文类中:

public class MyContext : DbContext {...}

<configuration>并更改根web.config文件部分内的连接字符串部分的名称:

<connectionStrings>
    <add name="MyContext" connectionString="..." />
</connectionStrings>
于 2013-04-22T20:21:37.243 回答
1

自从我遇到同样的问题以来,我一直在研究这个线程。我已经尝试了所有步骤,例如-

  • 授予 SQLServer 权限
  • 删除帐户控制器的 [InitializeSimpleMembership] 属性,同时在 Global.asax 中添加 WebSecurity.InitializeDatabaseConnection 连接。

但没有任何效果。

所以尝试了别的东西 -

  • 将默认连接字符串中的数据源更改为 localhost。
  • 在名为 MVCApp 的本地主机中创建了一个空数据库
  • 将连接字符串中的初始目录设置为 MVCApp
  • 从连接字符串中删除了 AttachDBFilename

所以现在我的连接字符串指向一个本地数据库。它奏效了。

我仍然不确定为什么几天前 MS 的默认实现现在不起作用。但在这个时候,我对周围的工作感到满意。

于 2014-04-15T09:01:54.277 回答