c# - INSERT 语句与具有用户 ID(ASP 身份)的 FOREIGN KEY 冲突
问题描述
我正在开发一个允许用户通过表单提交帖子的功能,它成功地从 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 发布到数据库等中,但是当我按照调试器单击“是”时,它说它正在识别它是匿名的,它应该将 userId 更改为字符串“anonymous”并将其作为数据库中的 Id 提交,但我不断收到这个错误,阻止我如下
SqlException:INSERT 语句与 FOREIGN KEY 约束“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 数据包管理器上更新数据库时,出现以下错误
“更新条目时发生错误。有关详细信息,请参阅内部异常。”
解决方案
推荐阅读
- sharepoint - Azure 数据工厂和个人或组 SharePoint 数据类型
- javafx - JavaFX CSS 选择框和组合框
- wordpress - 在父类别上显示 Woocommerce 子类别的描述
- javascript - 谷歌表格电子邮件发送功能不起作用
- vue.js - vue-cli:为什么在 npm run build 后我在 Devtools 中看到非缩小的 javascript 代码?
- python - 在 Folium 中具有时间控制的 WMS 层
- javascript - 当其值为 true 时,我需要将复选框设置为启用
- java - 如何在 aws lambda 中关闭 aws 客户端
- php - Twilio 会议第一个参与者自动挂断电话
- sql - 循环使用序列名称的数据库表