实体框架6代码首先重复

时间:2016-02-23 15:48:18

标签: ef-code-first duplicates entity-framework-6 code-first

我试图学习EFCF,但我偶然发现了记录重复问题,我无法在互联网上的任何地方找到解决方案(或者我只是不知道要搜索什么)。 DbContext类如下:

public class Database : DbContext
{
    public Database() : base("name=DBconnString")
    {
    }
    public DbSet<Human> People { get; set; }


    public void human_add_new(int _rank, String _name, String _surname)
        {
            Human dummy = new Human(_rank, String _name, String _surname);
            People.Add(dummy);
            SaveChanges();
        }
}

人类如下:

public class Human
    {
        [Index(IsUnique = true)]
        public Int16 ID { get; set; }
        public int rank { get; set; }
        public String name { get; set; }
        public String surname { get; set; }
    }

现在,问题是每当我运行我的代码并执行它时:

human_add_new(3, "Noname", "Noname");

创建一条新记录,从而在我的数据库中创建重复项(因此,如果我运行代码5次,将创建5条相同的记录)。我该如何预防呢? [Index(IsUnique = true)]似乎没有帮助,因为在一个更大的数据库中,可能会发生2个人姓氏相同或姓氏相同的情况。

以下是MS SQL Studio中的样子:imgur

1 个答案:

答案 0 :(得分:0)

您已将唯一索引应用于ID属性 - 如果您需要唯一的姓名/姓氏,您还必须对其应用唯一约束。

(根据你的imgur图片,ID是不同的,其他字段是相同的)