我已经使用ASP.net会员多年,我刚刚开始尝试ASP.net身份.他们刚刚发布了2.0版,它应该支持int主键.我已经定义了我的自定义标识类,以获得整数主键支持:
public class User : IdentityUser<int, UserLogin, UserRole, UserClaim>
{
}
public class UserLogin : IdentityUserLogin<int>
{
}
public class Role : IdentityRole<int, UserRole>
{
public string Description { get; set; } // Custom description field on roles
}
public class UserRole : IdentityUserRole<int>
{
}
public class UserClaim : IdentityUserClaim<int>
{
}
public class MyDbContext : IdentityDbContext<User, Role, int, UserLogin, UserRole, UserClaim>
{
public MyDbContext() : this("MyDB") { }
public MyDbContext(string connStringName) : base(connStringName)
{
this.Configuration.LazyLoadingEnabled = …Run Code Online (Sandbox Code Playgroud) 使用ASP.NET Core身份,我创建了一个新用户UserManager.CreateAsync()并将其分配给现有角色UserManager.AddToRoleAsync.这是有效的,因为用户和角色之间的实现存储在AspNetUserRoles数据库的表中.
但是当我使用UserManager(例如UserManager.FindByMail()方法)获取用户时,Role列表为空.我也尝试过IncludeEF 的功能:
var user = userManager.Users.Include(u => u.Roles).FirstOrDefault(u => u.Email == "test@test.de");
Run Code Online (Sandbox Code Playgroud)
这给了我n:m关联表的ID,因为我需要角色名称,所以它不是很有用.也不可能使用第二个查询加载它们,因为Roles身份用户的属性是只读的.我希望得到一个List<string>角色名称.找不到任何关于此的信息.
对我来说,唯一的解决方法似乎是向我的用户添加一个自定义属性,并用数据填充它们,我使用第二个查询获取数据.但那不是一个好的解决方案.不能相信ASP.NET Core Identity没有更好的方法来获取这些数据......
asp.net-identity asp.net-core-mvc asp.net-core asp.net-core-1.0