2011-06-04 74 views
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的父類別的可爲空的父類別。

+1

我懷疑你沒有正確傳遞CategoryId,你有沒有使它自動增加或手動使它在保存之前是唯一的? – paragy 2011-06-04 09:57:41

+0

它設置爲在數據庫中自動增量。它也被設置爲獨特和關鍵。 – Arnstein 2011-06-04 13:23:52

+0

IMO不要做任何錯誤的事情,所以我建議你運行SQL分析器並檢查究竟是什麼SQL語句。比你可以很容易地找出問題。 – paragy 2011-06-04 18:25:37

回答

0

IX_Category的內容是什麼?如果不需要,請刪除它。在數據庫中是否有另一個帶有「Test」作爲CatName的類別? IX_Category是CatName字段上的唯一鍵約束嗎?