Исправить свободный интерфейс API для отношений один-к-одному в Entity Framework?

На основе следующих моделей:

public class Parent
{
    public int Id {get; set;}
    public virtual Child Child {get; set;}
}

public class Child
{
    public int Id {get; set;}
    public int ParentId {get; set;}
    public virtual Parent Parent {get; set;}
}

Я настроил отображение для классов следующим образом:

public class ParentMap : EntityTypeConfiguration<Parent>
{
    public ParentMap()
    {
        this.ToTable("parents");

        this.HasKey(t => t.Id).Property(t => t.Id).HasColumnName("id")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        this.HasOptional(t => t.Child)
            .WithRequired(t => t.Parent)
            .WillCascadeOnDelete();
    }
}

public class ChildMap : EntityTypeConfiguration<Child>
{
    public ChildMap()
    {
        this.ToTable("children");

        this.HasKey(t => t.Id).Property(t => t.Id).HasColumnName("id")
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

        this.Property(t => t.ParentId).HasColumnName("id_parent");
    }
}

Свойства навигации выше отмечены virtualОднако отложенная загрузка отключается, выполняя следующие действия:

public Abo5Context()
  : base("Name=mydbcontext")
{
    this.Configuration.LazyLoadingEnabled = false;
}

Parent может иметь 0 или 1 Child и Child может иметь 0 или 1 Parent,

Я использую готовую загрузку, чтобы загрузить полный граф сущности для Parent, Тем не менее, с учетом вышеизложенного, Child не загружается. Я следую шаблонам UoW и Repository и загрузке Parent Совокупность делается следующим образом:

public Parent Get(int id, params Expression<Func<Parent, object>>[] include)
{
    var set = include.Aggregate<Expression<Func<Parent, object>>, IQueryable<Parent>>
              (dbSet, (current, expression) => current.Include(expression));

    return set.SingleOrDefault<Parent>(x => x.Id == id);
}

Разве это не правильный путь для конфигурации отношений 1..0-1?

0 ответов

Другие вопросы по тегам