我有以下表格设计。
从这里可以看出,有一对多关系,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();
答案 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);