C# 如何使用.NET实体框架将数据插入桥接表?

C# 如何使用.NET实体框架将数据插入桥接表?,c#,asp.net,linq,entity-framework,C#,Asp.net,Linq,Entity Framework,我似乎被一个特定的问题困住了。我使用的是实体框架,我已经从数据库中自动生成了所有实体。我注意到,我拥有的任何用作桥接表以防止多对多关系的表实际上都没有实体;例如,我试图使用的名为“文凭证书”的表通过一个名为“DegreeRelationship”的桥接表链接到一个名为“学位”的表。DegreeRelationship获取这两个表的主键,并将它们用作主键和外键。我注意到,我在上下文类中得到的不是实体,而是: modelBuilder.Entity<Degree>()

我似乎被一个特定的问题困住了。我使用的是实体框架,我已经从数据库中自动生成了所有实体。我注意到,我拥有的任何用作桥接表以防止多对多关系的表实际上都没有实体;例如,我试图使用的名为“文凭证书”的表通过一个名为“DegreeRelationship”的桥接表链接到一个名为“学位”的表。DegreeRelationship获取这两个表的主键,并将它们用作主键和外键。我注意到,我在上下文类中得到的不是实体,而是:

  modelBuilder.Entity<Degree>()
            .HasMany(e => e.DiplomaCertificates)
            .WithMany(e => e.Degrees)
            .Map(m => m.ToTable("DegreeRelationship").MapLeftKey("DegreeID").MapRightKey("ProgramID"));
modelBuilder.Entity()
.HasMany(e=>e.HasMany)
.有许多(e=>e度)
.Map(m=>m.ToTable(“degrerelationship”).MapLeftKey(“DegreeID”).MapRightKey(“ProgramID”);
在我的代码隐藏中,到目前为止,我一直在处理插入,如下所示:

public void InsertDiplomaProgram(DiplomaCertificate diplomaProgram, List<EntranceRequirementList> entReqList, List<int> degreeIDs)
    {
        using (Pathway_Model context = new Pathway_Model())
        {
            DiplomaCertificate added = null;
            EntranceRequirement addedEntReq = null;
            added = context.DiplomaCertificates.Add(diplomaProgram);


            // create entrance requirement entry for each row entered
            foreach (EntranceRequirementList entry in entReqList)
            {
                EntranceRequirement entReq = new EntranceRequirement()
                {
                    ProgramID = added.ProgramID,
                    CourseID = entry.CourseID,
                    Marks = entry.Mark
                };

                addedEntReq = context.EntranceRequirements.Add(entReq);
            }

            //create degree diploma entry for each row entered
            foreach (int entry in degreeIDs)
            { 
                // normally I would try and use a foreach to populate new entries in the database,
                // but right now I am not sure???
            }



            // commits the add to the databas
            context.SaveChanges();
        }
    }
public void insert外交官计划(外交官证书计划、列表entReqList、列表degreeID)
{
使用(路径\模型上下文=新路径\模型())
{
已添加证书=空;
输入要求addedEntReq=null;
added=context.emplicaccertificates.Add(emplicaprogram);
//为输入的每一行创建入学要求条目
foreach(entReqList中的入口要求列表条目)
{
入口要求entReq=新入口要求()
{
ProgramID=added.ProgramID,
CourseID=entry.CourseID,
马克=进入。马克
};
addedEntReq=上下文.enterrequirements.Add(entReq);
}
//为输入的每一行创建学位文凭条目
foreach(以度为单位的整数输入)
{ 
//通常我会尝试使用foreach来填充数据库中的新条目,
//但是现在我不确定???
}
//将添加提交到数据库
SaveChanges();
}
}

基本上,我是想把文凭拿出来,把学位证书的清单放到学位证书的表格里,但是我被卡在这里了。如果有人能提出建议,我将不胜感激。谢谢

我假设下面的方法可以奏效

diplomaProgram.Degrees.Add(Degree)
使用这种结构也是有意义的。因此,程序将在其集合中有其映射度(反之亦然)


我在这里得到一个错误,我试图插入到外交官证书表中,当它应该插入到DegreeRelationship中时,我必须改变周围的情况-我必须放入selectedDegree.CompassicaCertificates.Add(外交官程序);因为键的映射方式不同。