插入语句与用户ID(ASP标识)与外键冲突



我正在研究一项功能,该功能允许用户通过表单提交帖子,成功地从Aspnetusers获得了用户ID。我已经实施了一个广播按钮,该按钮使用户可以选择成为匿名提交。代码如下,

protected void AddPost(object sender, EventArgs e)
{

    var User = System.Web.HttpContext.Current.User.Identity.GetUserId();
    if (Convert.ToBoolean(Int32.Parse(inputAnonymous.SelectedValue)))
    {
        User = "anonymous";
    }
    Post newPost = new Post()
    {
        postTitle = inputTitle.Text,
        postBody = inputBody.Text,
        postDescription = inputDescription.Text,
        postCategory = inputCategory.SelectedValue,
        postAnonymous = Convert.ToBoolean(Int32.Parse(inputAnonymous.SelectedValue)),
        Id = User
    };
    using (var _dbContext = new ApplicationDbContext())
    {
        _dbContext.Posts.Add(newPost);
        _dbContext.SaveChanges();
    }
}

当为用户匿名选择选项"否"时,帖子是正常提交的,并且它将ID发布到数据库等中,但是当我关注调试器时,当我单击"是"时,它说是认识到它是匿名的,并且应该将用户ID更改为"匿名"字符串,并将其作为数据库中的ID提交,但是我一直遇到此错误,以防止我使用如下

sqlexception:插入语句与外键约束" fk_dbo.posts_dbo.aspnetusers_id"冲突。冲突发生在数据库" Aspnet-webenterprise-20190201040107",表" dbo.aspnetusers",列'ID'中。该声明已终止。

更新:我已经将此代码添加到我的configuration.cs

 {
                var passwordHash = new PasswordHasher();
                string password = passwordHash.HashPassword("Anonymous@123");
                context.Users.AddOrUpdate(u => u.UserName,
                    new ApplicationUser
                    {
                        UserName = "Anonymous@Anonymous.com",
                        PasswordHash = password,
                        PhoneNumber = "12345678911",
                        Email = "Anonymous@Anonymous.com"
                    });
                context.Roles.AddOrUpdate(
                    new IdentityRole { Id = "a1f04ba5-5600-4a6e-be43-ae0d6360c0ab", Name = "Anonymous" }
                    );
            }

但是,当我在Nuget数据包管理器上更新数据库时,我会收到以下错误

"更新条目时发生了错误。有关详细信息,请参见内部异常。"

没有具有ID"匿名"的用户,因此您会出现错误。Aspnetusers不包含任何ID"匿名"的用户。除了使用不存在的ID值外,此代码没有错。

就这个问题而言,我的建议是创建一个匿名用户,获取他的ID并将该ID绑定到所有应该是匿名的帖子。然后,所有匿名帖子都会具有相同的ID,但这并不重要,因为它们还是匿名的。检查此链接和此链接以获取更多信息如何通过Code-First Architecture插入用户

相关内容

  • 没有找到相关文章