我的代码工作正常,但是当我尝试通过添加应用程序用户和所有类将用户ID设置为Int而不是字符串时。添加迁移工作正常,但在更新数据库时出现以下错误。
转换nvarchar 值时转换失败 '60b67a91-64e0-4dc7-a85c-abd9521a0b50' 到数据类型 int。声明 已终止。
以下是代码
public class ApplicationUser : IdentityUser<int, CustomUserLogin, CustomUserRole,
CustomUserClaim>
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(
UserManager<ApplicationUser, int> manager)
{
var userIdentity = await manager.CreateIdentityAsync(
this, DefaultAuthenticationTypes.ApplicationCookie);
return userIdentity;
}
}
public class CustomUserRole : IdentityUserRole<int> { }
public class CustomUserClaim : IdentityUserClaim<int> { }
public class CustomUserLogin : IdentityUserLogin<int> { }
public class CustomRole : IdentityRole<int, CustomUserRole>
{
public CustomRole() { }
public CustomRole(string name) { Name = name; }
}
public class CustomUserStore : UserStore<ApplicationUser, CustomRole, int,
CustomUserLogin, CustomUserRole, CustomUserClaim>
{
public CustomUserStore(ClinicContext context)
: base(context)
{
}
}
public class CustomRoleStore : RoleStore<CustomRole, int, CustomUserRole>
{
public CustomRoleStore(ClinicContext context)
: base(context)
{
}
}
public class CustomUserManager : UserManager<ApplicationUser, int>
{
public CustomUserManager(CustomUserStore store) : base(store) { }
}
public class CustomRoleManager : RoleManager<CustomRole, int>
{
public CustomRoleManager(CustomRoleStore store) : base(store) { }
}
我的数据库上下文为 :
public partial class ClinicContext : IdentityDbContext<ApplicationUser, CustomRole,
int, CustomUserLogin, CustomUserRole, CustomUserClaim>
{
public ClinicContext()
: base("name=ClinicContext")
{
}
}
您有具有 nvarchar
ID 的现有行,并且更新脚本不知道如何将 GUID 转换为int
。
如果您并不真正需要此数据,则删除行可能是最简单的 - 特别是如果您已将数据库配置为生成 Id。