【问题标题】:Unique key constraint when saving in entity framework 3.5在实体框架 3.5 中保存时的唯一键约束
【发布时间】: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


【解决方案1】:

IX_Category 的内容是什么?如果不需要,请将其删除。在您的数据库中是否有另一个类别以“Test”作为其 CatName? IX_Category 是 CatName 字段的唯一键约束吗?

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 1970-01-01
    • 2017-08-24
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多