Entity Framework 6 个 Code First 重复项

Entity Framework 6 Code First duplicates

我正在尝试学习 EFCF,但我偶然发现了一个记录重复问题,而且我无法在 Internet 上的任何地方找到解决方案(或者我只是不知道要搜索什么)。 DbContext class 如下:

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();
        }
}

而人类class如下:

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

您对 ID 属性 应用了唯一索引 - 如果您想要唯一 names/surnames,您还必须对它们应用唯一约束。

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