0
我使用EF 3.5並且擁有一個帶分類表的數據庫。我創建了一個部分類來擴展由EF創建的類。我將CategoryId作爲db中的一個鍵,並且在模型中設置爲Identity。這是我的部分類:在實體框架中保存時的唯一鍵約束3.5
public partial class Category
{
public Category(string name, bool isChild)
{
this.CatName = name;
this.IsChild = isChild;
}
public bool Save()
{
try
{
using (var context = new PhonebookEntities())
{
context.AddToCategories(this);
context.SaveChanges();
}
return true;
}
catch (System.Exception)
{
return false;
}
}
}
但是當我嘗試創建一個新的類別的對象,並將其保存..:
var category = new Category("Test", false);
category.Save();
我得到這個異常:「的UNIQUE KEY約束衝突‘IX_Category’ 。不能在對象'dbo.Category'中插入重複鍵。\ r \ n該語句已被終止。「 我應該提到一個類別有一個對自身的引用,因爲它可以通過一個可指向該類別id的父類別的可爲空的父類別。
我懷疑你沒有正確傳遞CategoryId,你有沒有使它自動增加或手動使它在保存之前是唯一的? – paragy 2011-06-04 09:57:41
它設置爲在數據庫中自動增量。它也被設置爲獨特和關鍵。 – Arnstein 2011-06-04 13:23:52
IMO不要做任何錯誤的事情,所以我建議你運行SQL分析器並檢查究竟是什麼SQL語句。比你可以很容易地找出問題。 – paragy 2011-06-04 18:25:37