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