我有两个名为ot_req
和transport
的表。如果某位员工想通过运输提出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/