我尝试将Id从字符串更改为int但我遇到了一个问题: 所有其他帖子都在_Startup文件中使用:
services.AddIdentity<User, IdentityRole<int>>.()
.AddEntityFrameworkStores<DatabaseContext,int>()
.AddDefaultTokenProviders();
但是当我尝试做同样的事情时,我在DatabaseContext之后添加int时遇到了这个错误:
'IdentityBuilder'不包含'AddEntityFrameworkStores'的定义,并且没有可以找到接受类型'IdentityBuilder'的第一个参数的扩展方法'AddEntityFrameworkStores'(您是否缺少using指令或汇编引用?)(CS1061) (演示)
我做的其他改变:
public class User : IdentityUser <int>
public class DatabaseContext :IdentityDbContext <User,IdentityRole<int>,int>
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>(i => {
i.ToTable("Users");
i.HasKey(x => x.Id);
});
modelBuilder.Entity<IdentityRole>(i => {
i.ToTable("Role");
i.HasKey(x => x.Id);
});
modelBuilder.Entity<IdentityUserRole<int>>(i => {
i.ToTable("UserRole");
i.HasKey(x => new { x.RoleId, x.UserId });
});
modelBuilder.Entity<IdentityUserLogin<int>>(i => {
i.ToTable("UserLogin");
i.HasKey(x => new { x.ProviderKey, x.LoginProvider });
});
modelBuilder.Entity<IdentityRoleClaim<int>>(i => {
i.ToTable("RoleClaims");
i.HasKey(x => x.Id);
});
modelBuilder.Entity<IdentityUserClaim<int>>(i => {
i.ToTable("UserClaims");
i.HasKey(x => x.Id);
});
base.OnModelCreating(modelBuilder);
}
答案 0 :(得分:1)
可能您正在使用不再接受通用ASP.NET Core 2.x
参数的TKey
。
AddEntityFrameworkStores方法不接受TKey参数 它在ASP.NET Core 1.x中完成。主键的数据类型由推断出来 分析DbContext对象。
相关链接: