【问题标题】:ASP.NET MVC 5 ApplicationUser as foreign keyASP.NET MVC 5 ApplicationUser 作为外键
【发布时间】:2014-04-04 23:42:49
【问题描述】:

我希望能够在用户访问内容页面的任何时候更新 UserContent 表。我创建了一个控制器来尝试在执行此操作之前手动输入数据,但出现外键错误:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.UserContent_dbo.IdentityUser_ApplicationUserId". The conflict occurred in database "COMPILING_a6a38dac907c4816af896bbeb6cdaa55", table "dbo.IdentityUser", column 'Id'.
The statement has been terminated.

型号:

public class UserContent
{
    public int ID { get; set; }

    [Display(Name = "Times Visited")]
    public int Visited { get; set; }

    [Display(Name = "Rating")]
    public byte Rating { get; set; }

    [Display(Name = "Content Page")]
    public int ContentID { get; set; }

    [Display(Name = "User")]
    public string ApplicationUserId { get; set; }

    public virtual Content Content { get; set; }
    public virtual ApplicationUser ApplicationUser { get; set; }
}

控制器:

private CompilingContext db = new CompilingContext();
private ApplicationDbContext db2 = new ApplicationDbContext();  

public ActionResult Create([Bind(Include="ID,Visited,Rating,ContentID,ApplicationUserId")] UserContent usercontent)
    {
        if (ModelState.IsValid)
        {
            db.UserContent.Add(usercontent);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.ApplicationUserId = new SelectList(db2.Users, "Id", "UserName", usercontent.ApplicationUserId);
        ViewBag.ContentID = new SelectList(db.Contents, "ID", "Title", usercontent.ContentID);
        return View(usercontent);
    }

【问题讨论】:

  • 在点 db.UserContent.Add(usercontent);被称为,usercontent的状态是什么?它是否具有有效的 ApplicationUserId?
  • @BrendanGreen 这是一个与 AspNetUsers 表中的用户匹配的 ID。我还查看了 IdentityUser 表,它是空的。我不知道是否应该这样做,因为我很难在 MVC 5 上找到资源。
  • 这就是问题所在。在不了解模型的详细信息的情况下,您在 UserContent 中的 ApplicationUserId 上有一个 FK,它指向 IdentityUser 表中的 Id 列。如果 IdentityUser 为空,这就是您会收到的错误。有关 ASP.NET 身份的详细信息,请参阅此资源:asp.net/identity
  • 通过将所有内容放在同一上下文中来修复它。

标签: c# asp.net-mvc entity-framework asp.net-mvc-5


【解决方案1】:

我能够通过将我的所有模型置于一个上下文中来解决这个问题。我最初将它们放在两个不同的上下文中,这导致了问题,因为它给了我两个独立的数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-07
    • 2014-01-22
    相关资源
    最近更新 更多