c# - 在 .NET 4.5.1 中设置 ASP.NET Identity ConnectionString 属性

标签 c# asp.net visual-studio-2013

所以基本上终于学会了how to change OpenAuth to not use DefaultConnection in .NET 4.5 ,我已经转到 4.5.1,使这些学习变得毫无意义。 AuthConfig.cs 的职责现在在 Startup.Auth.cs 中,OpenAuth 的静态方法被抽象掉了,因此我不能再直接更改 OpenAuth.ConnectionString 的默认值。

在 .NET 4.5.1 中更改成员资格的连接字符串/数据库的最佳做法是什么?

最佳答案

我遵循了您建议的方法,它对我很有效。然而,几乎没有什么主要是句法和命名问题恰好是不同的。我认为这些差异可能是由于我们使用的 Visual Studios 的不同版本(而不是 .NET - 我的版本是 .NET 4.5.1 的第一版)。我继续描述我的具体解决方案。

我的目标是拥有一个数据库上下文,通过它我可以访问用户或身份相关数据以及我的自定义应用程序数据。为此,我完全删除了类 ApplicationDbContext,它是在您创建新项目时自动为您创建的。

然后,我创建了一个新类 MyDbContext

public class MyDbContext: DbContext
{
    public MyDbContext() : base("name=DefaultConnection")
    {

    }

    //
    // These are required for the integrated user membership.
    //
    public virtual DbSet<IdentityRole> Roles { get; set; }
    public virtual DbSet<ApplicationUser> Users { get; set; }
    public virtual DbSet<IdentityUserClaim> UserClaims { get; set; }
    public virtual DbSet<IdentityUserLogin> UserLogins { get; set; }
    public virtual DbSet<IdentityUserRole> UserRoles { get; set; }

    public DbSet<Movie> Movies { get; set; }
    public DbSet<Order> Orders { get; set; }
    public DbSet<Purchase> Purchases { get; set; }
}

RolesUsersUserClaimsUserLoginsUserRoles 是根据成员(member)管理的建议要求。但是,在我的例子中,它们的类型有不同的名称(ApplicationUser 而不是 UserIdentityUserClaim 而不是 UserClaim 等等.).我想这就是 Antevirus 出现“找不到用户”问题的原因。

此外,正如我们在我的案例中看到的那样,有 5 个这样的字段,而不是 8 个。这可能是由于 Visual Studio 的不同版本所致。

我所做的最后更改是在类 AccountController 中,它反射(reflect)了新上下文 MyDbContext 的使用。这里我传递了一个 MyDbContext 的实例,而不是 ApplicationDbContext

之前

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
{
}

之后

public AccountController()
    : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new MyDbContext())))
{
}

关于c# - 在 .NET 4.5.1 中设置 ASP.NET Identity ConnectionString 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19308959/

相关文章:

c# - 在事件中定义一个参数

c++ - 使用模板递归检查函数方法是否存在

c# - 如何通过反射在一次调用中同时获取字段和属性?

c# 和 java - hmacsha256 哈希之间的区别

c# - 值不能为空 - 应用程序管理器

c# - asp.net中的语音记录

asp.net - 有没有办法使用 sharepoint 作为我的自定义文档管理网站的后端版本控制和存储?

c++ - 在 C++ 中防止整数 0 隐式转换为指针的最佳方法是什么

visual-studio-2013 - 使用 WebEssentials 创建更少的源映射文件

c# - 如何在 C# 中拥有包含子函数的函数