Сначала я использую код EF 6. Итак, как показано ниже, у меня есть две связанные сущности.Я хочу, чтобы он был установлен в DocumentVersion
, чтобы DocumentId
и DocumentVersionNumber
были уникальными в комбинации.Таким образом, может быть много записей для DocumentId
1 и лотов для DocumentVersionNumber
1, но только одна запись может иметь как DocumentId
1 , так и DocumentVersionNumber
1. Используя приведенный ниже код, яполучить ошибку при создании миграции из-за dv.Document.DocumentId
в предложении HasIndex
.Я знаю, что это можно сделать в базе данных, сделав комбинацию уникальной или даже имея сложный первичный ключ.Я мог бы добавить DocumentId
к DocumentVersion
объекту, но я это мой первый проект с первым кодом и пытаюсь извлечь уроки из него.Можно ли добиться того, что я хочу без , добавив DocumentId
исключительно для этой цели?
public class Document
{
public Document()
{
AllVersions = new HashSet < DocumentVersion >();
History = new HashSet < DocumentHistory >();
}
[ DatabaseGenerated ( DatabaseGeneratedOption.Identity ) ]
public int DocumentId { get; set; }
public string Name { get; set; }
public string Note { get; set; }
public string Description { get; set; }
public CheckoutStatus Status { get; set; } = CheckoutStatus.Locked;
public ICollection < DocumentVersion > AllVersions { get; set; }
public ICollection < DocumentHistory > History { get; set; }
}
public class DocumentVersion
{
public DocumentVersion() => History = new HashSet < DocumentVersionHistory >();
public DocumentVersion ( byte [ ] content )
{
History = new HashSet < DocumentVersionHistory >();
Content = content;
}
public int DocumentVersionId { get; set; }
public int DocumentVersionNumber {get; set; }
public string Note { get; set; }
public PublishingStatus Status { get; set; }
public byte [ ] Content { get; set; }
public Document Document { get; set; }
public ICollection < DocumentVersionHistory > History { get; set; }
}
protected override void OnModelCreating ( DbModelBuilder modelBuilder )
{
modelBuilder.Entity < Document >().HasKey ( d => new { d.DocumentId } );
modelBuilder.Entity < DocumentVersion >().HasKey ( dv => dv.DocumentVersionId ).HasIndex ( dv => new { dv.Document.DocumentId, dv.DocumentVersionNumber } );
...
}