不生成唯一的GUID

问题描述:

存储数据时,我收到了一个非常奇怪的事件。 我的表格使用Guid作为主要ID,出于某种原因,它为所有新条目记录相同的Guid。不生成唯一的GUID

表构建

public class Checkpoint 
{ 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid Id { get; set; } 

    [Required] 
    public string Title { get; set; } 

    public DateTime? CreatedOn { get; set; } 
    public DateTime? ModifiedOn { get; set; } 
} 

public class Track 
{ 
    public Track() 
    { 
     Checkpoints = new List<Checkpoint>(); 
    } 

    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public Guid Id { get; set; } 

    [Required] 
    public List<Checkpoint> Checkpoints { get; set; } 

    public DateTime? CreatedOn { get; set; } 
    public DateTime? ModifiedOn { get; set; } 
} 

代码段从模型转换为存储在跟踪新的关卡列表。

var trackObject = new Track(); 

var checkpointList = model.Checkpoints.ConvertAll(x => new Checkpoint {Title = x.Title}); 

trackObject.Checkpoints.Add(checkpointList); 

db.Track.Add(trackObject); 
await db.SaveChangesAsync(); 

检查点表的结果(ⅰ被遗漏的外键指向跟踪对象):

ID          | TITLE | CREATED_ON 
-------------------------------------------------------------------------------- 
c3451b2b-bb30-e711-b867-f01faf23929d | First | 4/05/2017 11:16:50 AM  
c5451b2b-bb30-e711-b867-f01faf23929d | Second | 4/05/2017 11:16:50 AM 
c6451b2b-bb30-e711-b867-f01faf23929d | Third | 4/05/2017 11:16:50 AM  
c7451b2b-bb30-e711-b867-f01faf23929d | Sprint | 4/05/2017 11:16:50 AM  
c8451b2b-bb30-e711-b867-f01faf23929d | Home | 4/05/2017 11:16:50 AM  
c9451b2b-bb30-e711-b867-f01faf23929d | Finish | 4/05/2017 11:16:50 AM 

如可看到的所有ID字段是相同的。 代码中的错误在哪里?

+1

你忘了把属性[Key]放在你的ID上吗? – Lenny32

+0

他们不一样。它们在第一部分都是不同的。这是因为它是一个SequentialGuid。 –

这些都是独特的和不同的。看看这些公布的指导的第二位数字。 EF代码告诉SQL生成新的Sequential Guids(TSQL NEWSEQUENTIALID())。

https://docs.microsoft.com/en-us/sql/t-sql/functions/newsequentialid-transact-sql