我有两个名为ot_reqtransport的表。如果某位员工想通过运输提出OT请求,则必须填写transport表。 transport_id表中的transport(auto_increment)是ot_req表的外键。填充transport表后,我想将自动递增的transport_id应用于ot_req表。有没有办法自动填充数据?
我写了这样的方法,但它对我不起作用。

public OTReqAddResponse OTReqAdd(OTReqAddRequest req)
    {
        OTReqAddResponse res = new OTReqAddResponse();
    using (var dbTransaction = context.Database.BeginTransaction())
    {
        try
        {
            ot_req objReq = new ot_req();
            transport objTransport = new transport();

            if (otDet.flag == 1)
            {
                  objTransport.form = req.from;
                  objTransport.to = req.to;
                  objTransport.destination = req.destination;
                  objTransport.reason = req.reason;

                  context.transports.Add(objTransport);
                  context.SaveChanges();

                  objOtReq.transport_id = objTransport.transport_id;
              }


            objReq.created_date = req.createdDate;
            objReq.creator = req.empId;
            objReq.status = 2;
            objReq.project_id = req.projectId;

            context.ot_req.Add(objReq);
            context.SaveChanges();

            dbTransaction.Commit();
          }

        dbTransaction.Dispose();
    }
    return res;
}


如何从mySql数据库检索tranport_id并作为一次提交同时作为ot_req表的外键应用?

最佳答案

您的ot_req对象应该具有一个链接回传输对象的属性。 (它可能称为传输?如果我正确地阅读下面的导航部分。)如果将该属性设置为新的,未提交的传输对象,则在提交两个对象时它将自动填充键。

 ot_req objReq = new ot_req();
 // whatever

 transport transport = new transport();
 objReq.transport = transport ; // This will auto-fill the FK during commit.
 // whatever

 // Add both ot_req and transport to the context and commit.
 context.ot_req.Add(objReq);
 context.SaveChanges();


希望这可以帮助您前进!

关于c# - 如何在一种方法中填写两个表(一对多)并自动添加外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47551560/

10-10 04:47