实体框架核心多对多未插入

前轮车

我正在使用EF7,并且有一个需要多对多关系的方案。

我有一个ParticipantSIR实体和一个ParticipantAssessmentReport实体。它们之间有一个链接表ParticipantSIRAssessmentReport。

public class ParticipantSIR
{
    public int ParticipantSIRID { get; set; }

    public virtual ICollection<ParticipantSIRAssessmentReport> ParticipantSIRAssessmentReport { get; set; }
    public virtual Participant Participant { get; set; }
}

public class ParticipantAssessmentReport
{
    public int ParticipantAssessmentReportID { get; set; }

    public virtual ICollection<ParticipantSIRAssessmentReport> ParticipantSIRAssessmentReport { get; set; }

}

public partial class ParticipantSIRAssessmentReport
{
    public int ParticipantSIRID { get; set; }
    public int ParticipantAssessmentReportID { get; set; }

    public virtual ParticipantAssessmentReport ParticipantAssessmentReport { get; set; }
    public virtual ParticipantSIR ParticipantSIR { get; set; }
}



modelBuilder.Entity<ParticipantSIRAssessmentReport>(entity =>
        {
            entity.HasKey(e => new { e.ParticipantSIRID, e.ParticipantAssessmentReportID });

            entity.HasOne(d => d.ParticipantAssessmentReport).WithMany(p => p.ParticipantSIRAssessmentReport).HasForeignKey(d => d.ParticipantAssessmentReportID).OnDelete(DeleteBehavior.Restrict);

            entity.HasOne(d => d.ParticipantSIR).WithMany(p => p.ParticipantSIRAssessmentReport).HasForeignKey(d => d.ParticipantSIRID).OnDelete(DeleteBehavior.Restrict);
        });

这似乎是需要使用EF核心(包括第三个实体)进行设置的方式。我从中获得了一些信息。http://ef.readthedocs.io/zh-CN/latest/modeling/relationships.html#many-to-many插入数据时,将填充2个外部实体,但不会填充链接表。

由于ParticipantSIR和ParticipantAssessmentReport之间没有导航属性,因此我不确定如何添加链接的数据。

  _db.ParticipantAssessmentReport.Add(participantAssessmentReport);
            foreach (var sir in participantSirs)
            {
                _db.ParticipantSIR.Add(sir);
            }
            _db.SaveChanges();
戴夫·罗森(Dave Ronson)

假设我们正在谈论EF Core 1.0rc1,则看起来您已经正确创建了模型(除了virtual关键字还没有执行任何操作,因为尚未实现延迟加载)。

由于1.0rc1尚未实现多对多,因此您需要做一些额外的工作。请参阅https://github.com/aspnet/EntityFramework/issues/1368#issuecomment-180066124以获取经典博客Post,Tag和PostTag示例代码。

在您的情况下,您需要向ParticipantSIRAssessmentReport明确添加以下内容:

    var participantSIRAssessmentReport = new ParticipantSIRAssessmentReport {ParticipantSIR = participantSIR, ParticipantAssessmentReport = participantAssessmentReport };  
    _db.ParticipantSIRAssessmentReport.Add(participantSIRAssessmentReport);  
    _db.SaveChanges();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架多对多未填充集合

来自分类Dev

实体框架核心多对多插入导航属性失败?

来自分类Dev

实体框架核心中的 Linq 多对多

来自分类Dev

实体框架核心-与多对多关系的问题

来自分类Dev

与实体框架核心中同一实体的多对多关系

来自分类Dev

实体框架核心多对多更改导航属性名称

来自分类Dev

C#-实体框架核心-多对多关系错误

来自分类Dev

实体框架6多对多要插入重复的行

来自分类Dev

实体框架多对多插入很好,但未正确更新

来自分类Dev

在实体框架中多对多插入/更新6可联接

来自分类Dev

实体框架核心ForEachAsync

来自分类Dev

实体框架核心收益

来自分类Dev

实体框架 - 多对多

来自分类Dev

实体框架多对多表插入复杂关系

来自分类Dev

实体框架核心:Update()方法插入而不是依赖实体上的UPDATE

来自分类Dev

实体框架插入性能

来自分类Dev

实体框架插入无效

来自分类Dev

实体框架批量插入

来自分类Dev

实体框架核心.include()问题

来自分类Dev

实体框架核心的反向引擎

来自分类Dev

实体框架核心级联删除

来自分类Dev

实体框架(核心)-级联删除

来自分类Dev

实体框架的核心所在

来自分类Dev

实体框架核心.include()问题

来自分类Dev

渴望加载实体框架核心

来自分类Dev

删除多对多实体框架

来自分类Dev

实体框架多对多映射

来自分类Dev

实体框架多对多更新

来自分类Dev

实体框架多对多搜索