实体框架:自动增量ID与第二个关键部分

时间:2015-05-11 22:42:09

标签: c# .net entity-framework

我有一个代码第一个EF模型类,如下所示:

public class ContentEntry
{
    [Key, Column(Order = 0)]
    public int Id { get; set; }

    [Key, Column(Order = 1)]
    public string Language { get; set; }
}

如果为0,是否可以自动递增Id

例如:我想添加一个像

这样的数据集
Id = 1, Language = "En"

工作正常。然后,我想添加以下内容:

Id = 1, Language = "De"

它也很好用。但是,我想补充一点:

Id = 0, Language = "En"

Id为0,因此数据库应为我生成Id

Id = 2, Language = "En"

没有办法,我知道我可以自己生成Id。但是如果两个线程尝试添加具有相同Id的元素会发生什么?我可以阻止这个吗?

1 个答案:

答案 0 :(得分:0)

    [Table("Test")]
    class Test
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Key, Column(Order = 0)]
        public int Id { get; set; }

        [Key, Column(Order = 1)]
        public string Language { get; set; }      

    }

插入录制

using (var db = new TestDbContext())
{
      db.Test.Add(new Test { Id = 0, Language = "En" });
      db.Test.Add(new Test { Id = 0, Language = "Sb" });

      db.SaveChanges();    
 }

结果

  

Id语言
   1恩
   2 Sb
   3恩
   4 Sb

enter image description here

Rrerence:Entity Framework: how to generate an auto-increment ID field