2011-06-04 72 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字段上的唯一键约束吗?