我有以下设计。
从这张图片中我们可以看到,一个情节将具有多个EpisodePatients,并且每个这些EpisodePatients将指向一个情节。
这是与表相对应的两个模型。
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; }
}
如何在
EpisodeModel
和EpisodePatientModel
之间设置一对多关系?由于
EpisodeModel
不包含EpisodePatient的外键,因此我无法执行以下操作。modelBuilder.Entity<EpisodeModel>().HasRequired(r => r.EpisodePatient).WithMany().HasForeignKey() //No foreign key
我已经试过了。
modelBuilder.Entity<EpisodeModel>().HasRequired(r => r.EpisodePatient);
但是通过这种方法,从数据库加载所有EpisodePatientModels时,不会延迟加载EpisodeModel。
最佳答案
我了解您需要在EpisodePatient表中具有一个引用Episode表ID的外键,因此我认为您可以这样解决:
public class EpisodeModel
{
public int ID { get; set; }
public virtual IEnumerable<EpisodePatientModel> EpisodePatients { get; set; }
}
public class EpisodePatientModel
{
public int EpisodePatientID { get; set; }
public int EpisodeID { get; set; }
public virtual EpisodeModel Episode { get; set; }
}
然后,您的配置应如下所示:
modelBuilder.Entity<EpisodePatientModel>().HasRequired(r => r.Episode).WithMany(e => e.EpisodePatients).HasForeignKey(r => r.EpisodeID);