我有以下设计。
c# - 没有外键 Entity Framework 的一对多设置-LMLPHP
从这张图片中我们可以看到,一个情节将具有多个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; }
}


如何在EpisodeModelEpisodePatientModel之间设置一对多关系?

由于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);

08-16 09:08