繁体   English   中英

如何使用来自不同表的多个外键为表提供数据

[英]How feed a table with multiple foreign keys from different tables

所以我有3个模型:

 public class Contact
 {
    public int ContactID { get; set; }
    public string name { get; set; }
    public int SegmentID { get; set; }
    public Segment Segment { get; set; }
 }

 public class MedicalPlan
 { 
    public int MedicalPlanID { get; set; }
    public string name { get; set; }
    public int SegmentID { get; set; }
    public Segment Segment { get; set; }
 }

 public class Target 
 {
    public int TargetID { get; set; }
    public int MedicalPlanID { get; set; }
    public int ContactID { get; set; }
    public MedicalPlan MedicalPlan { get; set; }
    public Contact Contact { get; set; }
 }

一个 MedicalPlan 有很多联系人,Target 有很多 MedicalPlan 和联系人,

现在每个 MedicalPlan 都有一个名为 generate 的按钮:示例

我想要的是当您按下该按钮时,它会创建一个目标并生成通过 SegmentID 与该 MedicalPlan 关联的每个联系人,并将它们插入表目标中,如下所示

我试过这样的事情:

                    IEnumurable<int> cons =
                        from contact in contacts
                        where contact.SegmentID == planMedical.SegmentID
                        select contact.ContactID;

                        int[] res = cons.ToArray();
                       


                        for ( int j = 0; j < res.Length ; j++)
                        {
                            targets.PlanMedicalID = id; //id MedicalPlans current row's key
                            targets.ContactID = res[j];
                            _context.Add(targets);
                            await _context.SaveChangesAsync();
                        }

但它什么也没做..

您正在创建ViewModel ,即PlanTargets ,但您必须创建Database Model 实体,您必须将 object 创建为:

for ( int j = 0; j < res.Length ; j++)
{
    var target = new Target //ADD THIS LINE
    {
        MedicalPlanID = id,
        ContactID = res[j] ​
   ​ };
    _context.Target.Add(target);
    _context.SaveChangesAsync();
}

您不是在创建Target object,而是在创建PlanTargets object 并尝试将其添加到 DbContext。

注意:在您的场景中,您想为每个ContactID创建一个Target object ,因此在您的for loop中,您必须使用new关键字创建 object 并设置相关属性,之后您必须将其添加到您的 DbContext 中,当您SaveChanges时,它会将结果保存到您的数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM