繁体   English   中英

INSERT 语句与使用 EF Core 的 FOREIGN KEY 冲突

[英]The INSERT statement conflicted with the FOREIGN KEY using EF Core

我正在尝试使用Microsoft.AspNetCore.Identity生成 id 来填充userData.AspNetUserID属性,我在控制台中收到此错误消息:

System.Data.SqlClient.SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_AspNetUserRoles_AspNetUsers_UserId”冲突。 冲突发生在数据库“JET”、表“dbo.AspNetUsers”、“Id”列中。

任何人都可以帮助解决此错误吗?

这是我的代码:

    public async Task<IActionResult> CopyUserRole(int id)
    { 
        var result  = _context.UserData.Where(m => m.UserDataID == id).FirstOrDefault();
        var userData = new UserData();
        var email = result.Email.Insert(0, "copy-");

        var user = new ApplicationUser { UserName = email, Email = email };
        var UserManager = await _userManager.CreateAsync(user, "12345678");

        if(!await _roleManager.RoleExistsAsync(result.Role))
        {
            await _roleManager.CreateAsync(new IdentityRole(result.Role));
        }

        var success = await _userManager.AddToRoleAsync(user, result.Role);

        //userData.UserDataID     = 0;
        userData.AspNetUserID   = user.Id;
        userData.DeviceID       = result.DeviceID;
        userData.PhotoUrl       = result.PhotoUrl;
        userData.Status         = result.Status;
        userData.Role           = result.Role;
        userData.Name           = result.Name+" - Copy";
        userData.Area           = result.Area;
        userData.FilePhotoURL1  = result.FilePhotoURL1;
        userData.Email          = email;
        userData.LihatJurnal    = result.LihatJurnal;
        userData.UserDataArea   = result.UserDataArea;
        userData.UserDataMenu   = result.UserDataMenu;
        userData.UserDataGudang = result.UserDataGudang;
        userData.UserDataPerkiraan = result.UserDataPerkiraan;

        try
        {
            _context.UserData.Add(userData);
            await _context.SaveChangesAsync();
        }
        catch(Exception Ex)
        {
            Console.WriteLine("\n ======================== \n");
            Console.WriteLine("\n " + Ex + " \n");
            Console.WriteLine("\n ======================== \n");
        }

        return Json(userData);
    }

您尝试创建具有相同用户名的用户,这导致user成为同一用户的实例。 对同一用户调用AddToRoleAsync会导致错误,因为该用户已经拥有该角色。 您应该尝试使用不同的电子邮件创建用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM