C# INSERT语句与外键约束错误冲突
嗨,我有这个错误 INSERT语句与外键约束“FK_dbo.AspNetUsers_dbo.Contacts_ContactID”冲突 冲突发生在数据库“aspnet-COGMakati-20140119015553”表“dbo.Contacts”列“ContactID”中 声明已终止 我正在使用实体框架和MVC 5的IdentityUser,所以我真的对我正在做的事情感到迷茫:| 这就是我试图填充的内容:C# INSERT语句与外键约束错误冲突,c#,sql-server,entity-framework-5,asp.net-mvc-5,asp.net-identity,C#,Sql Server,Entity Framework 5,Asp.net Mvc 5,Asp.net Identity,嗨,我有这个错误 INSERT语句与外键约束“FK_dbo.AspNetUsers_dbo.Contacts_ContactID”冲突 冲突发生在数据库“aspnet-COGMakati-20140119015553”表“dbo.Contacts”列“ContactID”中 声明已终止 我正在使用实体框架和MVC 5的IdentityUser,所以我真的对我正在做的事情感到迷茫:| 这就是我试图填充的内容: public class User : IdentityUser { [Requ
public class User : IdentityUser
{
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
public string Birthday { get; set; }
[Display(Name = "Referred By")]
public string LifegroupPreference { get; set; }
[Display(Name = "Civil Status")]
public string CivilStatus { get; set; }
public int EducationID { get; set; }
public int WorkID { get; set; }
public int ContactID { get; set; }
public int FamilyID { get; set; }
public int SpiritualID { get; set; }
public int GrowthMilestoneID { get; set; }
[ForeignKey("EducationID")]
public virtual Education Education { get; set; }
[ForeignKey("WorkID")]
public virtual Work Work { get; set; }
[ForeignKey("ContactID")]
public virtual Contact Contact { get; set; }
[ForeignKey("FamilyID")]
public virtual Family Family { get; set; }
[ForeignKey("SpiritualID")]
public virtual Spiritual Spiritual { get; set; }
[ForeignKey("GrowthMilestoneID")]
public virtual GrowthMilestone GrowthMilestone { get; set; }
}
在我看来,联系人
是在创建用户之前创建的。我不知道为什么会发生这种情况,因为当不使用IdentityUser
时,该代码会很好地填充它
现在这是寄存器
方法:
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = model.GetUser();
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var idManager = new IdentityManager();
idManager.AddUserToRole(user.Id, "User");
await SignInAsync(user, isPersistent: false);
return RedirectToAction("ViewAllMembers", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
公共异步任务寄存器(RegisterViewModel模型)
{
if(ModelState.IsValid)
{
var user=model.GetUser();
var result=await UserManager.CreateAsync(用户、模型、密码);
if(result.successed)
{
var idManager=new IdentityManager();
idManager.AddUserToRole(user.Id,“用户”);
等待信号同步(用户,ispersist:false);
返回重定向到操作(“查看所有成员”、“主页”);
}
其他的
{
加法器(结果);
}
}
//如果我们走到这一步,有些东西失败了,重新显示形式
返回视图(模型);
}
如果要创建FK对象,则应首先存储并检索其ID,否则将导致FK_键失败,因为您没有FK值
Walter您可能正试图使用不存在的外键访问或插入。转到您的
dbo.Contacts
表,用该键查找记录。在表中找不到具有该键的记录。您需要使用该键创建记录或使用另一个(存在的)键。如果需要,您可以允许引用不存在的记录
Sql("ALTER TABLE dbo.Users NOCHECK CONSTRAINT [FK_dbo.Users_dbo.Roles_RoleID]");
这种情况只发生在接触者身上吗?其余的异物呢?嗨,拉基塔!我真的不知道如何测试这个。但是假设代码是自上而下读取的,那么我猜它在接触错误之前已经通过了教育和工作。非常感谢。如果您已经有一个数据库,并且以后在模型中进行了更改并尝试运行,则会出现此错误。请更改数据库名称,然后重试。你会没事的。如果可以,请删除您的数据库并重新启动againHi@Reddy,我所做的是删除位于我的App_Data文件夹和整个migrations文件夹中的.mdf文件。我重新启用了迁移,添加了新的迁移,并更新了数据库。同样的问题=/或者是否有更好的方法删除数据库?您的数据库中是否包含大量信息??你介意删除数据库吗。。您正在使用SQL server吗?谢谢!我通过删除负责导航属性的id来解决这个问题,而是将每个表的导航属性交给用户。