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