C# 无法跟踪实体类型的实例
我有这段代码C# 无法跟踪实体类型的实例,c#,asp.net-core,asp.net-identity,C#,Asp.net Core,Asp.net Identity,我有这段代码 try { var isRemoved = await _userManager.RemoveFromRolesAsync(user, removedRoles); var isAdded = await _userManager.AddToRolesAsync(user, newRoles); success = isAdded.Succeeded && isRemoved.Succeeded; } catch(Exception e) { Cons
try
{
var isRemoved = await _userManager.RemoveFromRolesAsync(user, removedRoles);
var isAdded = await _userManager.AddToRolesAsync(user, newRoles);
success = isAdded.Succeeded && isRemoved.Succeeded;
}
catch(Exception e)
{
Console.Out.Write(e.Message);
}
每当我点击该行代码时,就会得到无法跟踪实体类型'IdentityUser'的实例,因为已经在跟踪另一个具有{'Id'}相同键值的实例。附着现有实体时,请确保仅附着一个具有给定键值的实体实例。考虑使用“dBraveTopStudioBuffel.EnabelSythViDeAtCug”来查看冲突的键值。< /代码>错误。很多回答建议我将注册服务的方式从单一注册改为范围注册。我将如何在注册身份用户时做到这一点。这就是我目前注册服务的方式
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<IdentityUser>(options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.Password.RequireDigit = true;
options.Password.RequireLowercase = true;
options.Password.RequireNonAlphanumeric = true;
options.Password.RequireUppercase = true;
options.Password.RequiredLength = 8;
})
.AddRoles<IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
services.AddDbContext(选项=>
options.UseSqlServer(
GetConnectionString(“DefaultConnection”);
services.AddDefaultIdentity(选项=>
{
options.SignIn.RequireConfirmedAccount=true;
options.Password.RequireDigit=true;
options.Password.RequireLowercase=true;
options.Password.RequireNonAlphanumeric=true;
options.Password.RequireUppercase=true;
options.Password.RequiredLength=8;
})
.AddRoles()
.AddEntityFrameworkStores();
另一个建议是分离本地条目,但由于这是由asp.net控制的,我将如何执行此操作?在调用上述代码将用户从角色中删除之前,请尝试使用以下代码附加用户:\u db.attach(user)代码>。此外,您还可以参考以下代码来配置ApplicationDbContext:services.AddDbContext(options=>{options.UseQueryTrackingBehavior(QueryTrackingBehavior.NotTracking);})代码>。