我有两个名为 ot_req
和 transport
的表。如果员工想要提出加类交通请求,我必须填写交通
表。 transport
表中的 transport_id
(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对象应该有一个链接回transport对象的属性。 (它可能被称为传输?如果我正确地阅读了下面的导航部分。)如果您将该属性设置为新的、未提交的传输对象,它将在提交这两个对象时自动填充 key 。
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/