延迟加载不适用于1到0或1的关系

时间:2016-09-08 09:25:47

标签: c# asp.net-mvc entity-framework visual-studio relationship

我有以下表格设计。

enter image description here 从这里可以看出,有一对多关系,EpisodePatient方面有许多关系。

然后,我有以下课程。

public class EpisodeModel
{
    public int ID { get; set; }
    public virtual EpisodePatientModel EpisodePatient { get; set; }
}
public class EpisodePatientModel
{
    public int EpisodePatientID { get; set; }
    public virtual EpisodeModel Episode { get; set; }
}

我在实体框架中建立的关系为0到1或者很多。这样做的原因是,我从一个视图中选择了所有的EpisodePatients,并且我希望在访问时将该剧集加载为Lazy。

这就是我建立关系的方式。

modelBuilder.Entity<EpisodePatientModel>().HasRequired(r => r.Episode).WithOptional(o => o.EpisodePatient);

我希望这在我的代码中充当一个零或多个,因为一集总会有一个EpisodePatient,反之亦然。

我面临的问题是,当我加载EpisodePatient并尝试访问Episode链接项时,它始终为null,并且不会发生延迟加载。

我在这里做错了什么?

更新

这是我加载原始EpisodePatient项目的方式。

this.DbContext.EpisodePatients.AsNoTracking();

2 个答案:

答案 0 :(得分:1)

我重新创建了你的模型但是使用了如下所示的数据注释,它运行良好:

@Override
public void onBackPressed() {
    Fragment myFragment = getSupportFragmentManager().findFragmentByTag("fragment");
    if (myFragment instanceof SearchFragment && myFragment.isVisible()) {
       //do what you want here
    }
}

答案 1 :(得分:0)

请在不使用AsNoTracking()的情况下进行尝试,因为如果您使用它,则您的上下文不会跟踪,如果您需要,则无法包含更多数据。

尝试改变一对一的关系。

modelBuilder.Entity<EpisodePatientModel>().HasRequired<Episode>(s => s.Episode).WithMany(s => s.EpisodePatient);