C# .NET Core 2.2 UserManager.CreateAync不允许重复用户名

C# .NET Core 2.2 UserManager.CreateAync不允许重复用户名,c#,asp.net-core,.net-core,asp.net-core-mvc,C#,Asp.net Core,.net Core,Asp.net Core Mvc,我正在尝试将另一个租户的重复用户名添加到我的用户数据库中。但是,我的createasync总是返回一个错误,指出找到了重复的用户名 我已经从normalizedusername列中删除了索引,但错误仍然发生 我发现这段代码应该覆盖usermanager protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry,IDictionary<object, object> item

我正在尝试将另一个租户的重复用户名添加到我的用户数据库中。但是,我的
createasync
总是
返回一个错误,指出找到了重复的用户名

我已经从normalizedusername列中删除了索引,但错误仍然发生

我发现这段代码应该覆盖
usermanager

protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry,IDictionary<object, object> items)
{
    if (entityEntry != null && entityEntry.State == EntityState.Added)
    {
        var errors = new List<DbValidationError>();
        var user = entityEntry.Entity as TUser;
        //check for uniqueness of user name and email
        if (user != null)
        {
            if (Users.Any(u => String.Equals(u.UserName, user.UserName)))
            {
                errors.Add(new DbValidationError("User",
                    String.Format(CultureInfo.CurrentCulture, IdentityResources.DuplicateUserName, user.UserName)));
            }
            if (RequireUniqueEmail && Users.Any(u => String.Equals(u.Email, user.Email)))
            {
                errors.Add(new DbValidationError("User",
                    String.Format(CultureInfo.CurrentCulture, IdentityResources.DuplicateEmail, user.Email)));
            }
        }
        else
        {
            var role = entityEntry.Entity as TRole;
            //check for uniqueness of role name
            if (role != null && Roles.Any(r => String.Equals(r.Name, role.Name)))
            {
                errors.Add(new DbValidationError("Role",
                    String.Format(CultureInfo.CurrentCulture, IdentityResources.RoleAlreadyExists, role.Name)));
            }
        }
        if (errors.Any())
        {
            return new DbEntityValidationResult(entityEntry, errors);
        }
    }
    return base.ValidateEntity(entityEntry, items);
}
受保护的重写DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry,IDictionary项)
{
if(entityEntry!=null&&entityEntry.State==EntityState.Added)
{
var errors=新列表();
var user=entityEntry.Entity作为TUser;
//检查用户名和电子邮件的唯一性
如果(用户!=null)
{
if(Users.Any(u=>String.Equals(u.UserName,user.UserName)))
{
添加(新的DbValidationError(“用户”,
格式(CultureInfo.CurrentCulture,IdentityResources.DuplicateUserName,user.UserName));
}
if(RequireUniqueEmail&&Users.Any(u=>String.Equals(u.Email,user.Email)))
{
添加(新的DbValidationError(“用户”,
格式(CultureInfo.CurrentCulture、IdentityResources.DuplicateEmail、user.Email));
}
}
其他的
{
var role=entityEntry.Entity作为TRole;
//检查角色名称的唯一性
if(role!=null&&Roles.Any(r=>String.Equals(r.Name,role.Name)))
{
添加(新的DbValidationError(“角色”),
格式(CultureInfo.CurrentCulture,IdentityResources.RoleReadyExists,role.Name));
}
}
if(errors.Any())
{
返回新的DbEntityValidationResult(entityEntry,错误);
}
}
返回基数ValidateEntity(entityEntry,items);
}
我已将其放在我的
应用程序的bContext
中。然而,据说它找不到
DbEntityValidationResult
,也找不到合适的覆盖方法

我还缺什么吗?如何实现此代码


编辑:上面提供的方法不适用于
.net Core 2.2

这是否回答了您的问题?您好,有点是,有点不是,我在哪里实现这些类?在applicationdbcontext?中,也使用验证方法?我确实把它放在onmodelcreating下面,但它显示了上面的错误。我使用的是.net core 2.2,如果它使它更简单的话。只要重新读取提供的链接,该方法就过时了。ASP.net core中没有支持多租户的内置机制。如果你想这样做,你要么使用一些现有的库,要么你将不得不自己构建很多东西。不过,详细说明所有这些都超出了堆栈溢出回答的范围如果你想自己走这条路,那么看看Identity的
UserManager
UserStore
是如何工作的,看看你需要做些什么来用一个多租户感知的替代方案来取代它们。