Я пытаюсь настроить EF 6 для сопоставления отношений один-к-одному. Вот код, который я использую:
public class Operacao
{
public int ID { get; set; }
public string Descricao { get; set; }
public virtual Analise Analise { get; set; }
}
public class Analise
{
[ForeignKey("Operacao")]
public int Id { get; set; }
public virtual Operacao Operacao { get; set; }
public int Valor { get; set; }
}
Вот код для класса контекста:
public class PRODERAMContext:DbContext
{
public DbSet<Operacao> Operacoes { get; set; }
public PRODERAMContext()
:base("some_cnn_string")
{
//just to be sure...
this.Configuration.LazyLoadingEnabled = false;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
// Configure StudentId as FK for StudentAddress
modelBuilder.Entity<Operacao>()
.HasRequired(s => s.Analise)
.WithRequiredPrincipal(ad => ad.Operacao);
}
}
Предыдущий код заканчивается генерацией следующих таблиц на моей базе данных:
![Generated tables](https://i.stack.imgur.com/SbJVa.png)
Вставка нового элемента работает без проблем. Проблема возникает при загрузке:
using (PRODERAMContext db = new PRODERAMContext())
{
//db.Configuration.LazyLoadingEnabled = false;
op = db.Operacoes.FirstOrDefault();
//op.Analise always null
}
Я не уверен почему, но EF никогда не гидратирует свойство Analise
из таблицы Analise
.
Я пытался следовать этому учебнику , но я не могу заставить его работать. Я наверняка что-то пропустил, но что?