【发布时间】:2011-06-04 09:01:43
【问题描述】:
我使用 EF 3.5 并有一个带有类别表的数据库。我创建了一个部分类来扩展 EF 创建的类。我将 CategoryId 作为数据库中的键,并在模型中设置为 Identity。这是我的部分课程:
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;
}
}
}
但是当我尝试创建一个新的 Category 对象并保存它时..:
var category = new Category("Test", false);
category.Save();
我收到此异常:“违反 UNIQUE KEY 约束 'IX_Category'。无法在对象 'dbo.Category' 中插入重复键。\r\n语句已终止。” 我应该提到一个类别有一个对自身的引用,因为它可以通过一个可空的 int 来拥有一个父类别,该 int 指向父类别的 categoryid。
【问题讨论】:
-
我怀疑你没有正确传递 CategoryId,你是让它自动递增还是在保存之前手动使其唯一?
-
在数据库中设置为自动增量。它也被设置为唯一和关键。
-
IMO 你没有做错任何事,所以我建议你运行 SQL 分析器并检查 SQL 语句的确切外观。你可以很容易地找出问题所在。
标签: entity-framework