Отношения один к одному с Entity Framework Fluent API
У меня проблемы с обратной навигацией на одном из моих объектов.
У меня есть следующие два объекта:
public class Candidate
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long CandidateId { get; set; }
....
// Reverse navigation
public virtual CandidateData Data { get; set; }
...
// Foreign keys
....
}
public class CandidateData
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long CandidateDataId { get; set; }
[Required]
public long CandidateId { get; set; }
// Foreign keys
[ForeignKey("CandidateId")]
public virtual Candidate Candidate { get; set; }
}
Теперь моя внешняя клавиша навигации по объекту CandidateData работает нормально. У меня проблемы с получением обратной навигации для объекта-кандидата для работы (если это вообще возможно).
Это моя функция OnModelCreating:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Candidate>()
.HasOptional(obj => obj.Data)
.WithOptionalPrincipal();
base.OnModelCreating(modelBuilder);
}
Это близко к работе, за исключением того, что в базе данных я получаю два столбца, которые ссылаются на CandidateId. Я получаю один из объекта POCO и получаю другой столбец Candidate_CandidateId, который, как я полагаю, был создан modelBuilder.
Я тихо потерян в данный момент. Может кто-нибудь, пожалуйста, пролить свет на то, что происходит?