Entity Framework вообще не поддерживает уникальные ключи, поэтому ответ на ваш первый вопрос - нет.
OwnerId
должен автоматически распознаваться как внешний ключ для Owner
, если только вы не сопоставлены с существующей базой данных, в которой внешний ключ назван по-другому. В таком случае вы можете использовать, например:
public abstract class Document: BaseEntity
{
public bool IsActive { get; set; }
public string Description { get; set; }
[Column("UserId"), ForeignKey("Owner")]
public Guid OwnerId { get; set; }
public User Owner { get; set; }
}
Возможно, аннотация данных внешнего ключа не нужна, но вы можете использовать ее для явного связывания вашего свойства FK со свойством навигации.
В беглом отображении вы можете использовать:
modelBuilder.Entity<Document>()
.Property(d => d.OwnerId)
.HasColumnName("UserId");
modelBuilder.Entity<Document>()
.HasRequired(d => d.Owner)
.WithMany(...)
.HasForeignKey(d => d.OwnerId);