创建时的外键约束错误

时间:2013-11-20 11:07:21

标签: asp.net-mvc ef-code-first

尝试将新项目添加到Kendo UI网格时,特别是在 SaveChanges 事件上,我收到以下错误:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_dbo.Items_dbo.Categories_CategoryId". The conflict occurred in database "appdb", table "dbo.Categories", column 'CategoryId'

这是我用来添加新项目的代码:

public int CreateItem(ItemViewModel viewModel)
{
     var item = new Item();
     viewModel.CopyToItem(item);

     db.Items.Add(item);
     db.SaveChanges();
     return item.ItemId;
}

项目 viewmodel:

[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int ItemId { get; set; }
public string Description { get; set; }
public int CategoryId { get; set; }

public virtual Category Category { get; set; }

public void CopyToItem(Item item)
{
    item.ItemId = this.ItemId;
    item.Description = this.Description;
    item.CategoryId = this.CategoryId;
}

类别模型:

[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int CategoryId { get; set; }
public string CategoryName { get; set; }

public virtual ICollection<Item> Items { get; set; }

我不确定问题是什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您必须将CategoryId设置为有效值。是ViewModel中的CategoryId吗?

答案 1 :(得分:0)

原来,View中的Kendo网格代码存在问题。我将类别定位为列而不是 CategoryId 。我的坏,应该更加敏锐。感谢您的建议并查看我的问题。