如何更改简单成员资格表的默认数据库

时间:2013-04-22 16:07:18

标签: asp.net-mvc-4 entity-framework-4 connection-string simplemembership localdb

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

我注意到默认帐户模型中的这段代码,在DbContext类中,它引用了默认连接,这是那里的代码:

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

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:1)

我一直在调查这个帖子,因为我遇到了同样的问题。我尝试了所有的步骤,如 -

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

但没有任何效果。

所以尝试了别的东西 -

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

所以现在我的连接字符串指向本地数据库。它起作用了。

我仍然不确定为什么MS的默认实现仅仅工作了几天就没有工作了。但是在这个时候我很满意你的工作。