У меня есть следующая сущность
public class DocumentHistory
{
public string Name { get; set; }
public string Description { get; set; }
public DateTime DateModified { get; set; }
public User ModifiedbyUser { get; set; }
public string HistoryAction { get; set; }
public virtual int DocumentId { get; set; }
public virtual Document Document { get; set; }
}
В моем DbContext
я определяю ключи, используя:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// DocumentHistory properties
modelBuilder.Entity<DocumentHistory>()
.HasKey(x => new { x.DocumentId, x.DateModified });
}
В моих автоматических интеграционных тестах я инициализирую одну запись с
_doc.HistoryRecords.Add(new DocumentHistory { DateModified = DateTime.Now });
Затем я пытаюсь создать новую запись с помощью:
// Create the history record
var history = new DocumentHistory
{
Name = doc.Name,
Description = doc.Description,
DateModified = DateTime.Now,
HistoryAction = ScrawlConstants.HistoryActions.Update,
ModifiedbyUser = user
};
doc.HistoryRecords.Add(history);
_context.SaveChanges();
Когда происходит SaveChanges
, возникает следующее исключение:
System.Data.SqlServerCe.SqlCeException: A duplicate value cannot be inserted into a unique index. [ Table name = DocumentHistories,Constraint name = PK__DocumentHistories__000000000000006E ]
Теоретически, каждая запись должна быть уникальной из-за разницы во времени, но это не так. Что я делаю не так?