c# - 如何在一种方法中填充两个表(一对多)并自动添加外键

标签 c# mysql entity-framework

我有两个名为 ot_reqtransport 的表。如果员工想要提出加类交通请求,我必须填写交通表。 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/

相关文章:

c# - 将父级和子级关系集合映射到 EF6 中的单个表

c# - 为什么我无法使用Mysql数据库?

c# - 更改结构列表中元素的值

MySQL 表 "doesn' t 存在”错误

mysql - 如果目标位于一个表中而事件位于另一个表中,如何显示实现不同目标的进度

entity-framework - Ria DomainService 输入参数怪异,Delete 特殊?

c# - XmlDataDocument 和 XslTransform 的未弃用替代品是什么?

c# - 提交方法无法识别 AddWithValue

php - 使用 pdo 检索 mysql 中的复选框数据

c# - 伪造 IDbSet<T> 并支持异步操作