简体   繁体   English

foreach 中的 SaveChanges(),用于插入 ID

[英]SaveChanges() inside foreach, to get ID inserted

I'm trying to insert inside a foreach and then get the ID inserted to insert this ID in another table (head and detail).我正在尝试在 foreach 中插入,然后插入 ID 以将此 ID 插入另一个表(头部和详细信息)。 And I have 2 foreach inside another.我在另一个里面有 2 个 foreach。 I'm using entity framework.我正在使用实体框架。

var remisiones = dbLocal.Database.SqlQuery<datosConsulta>(qDocumento).ToList();
       
foreach (var x in remisiones)
{
    var bcDoc = new bcDocumentos();
    bcDoc.cfecha = Convert.ToDateTime(x.CFECHA);
    dbLocal.bcDocumentos.Add(bcDoc);

    dbLocal.SaveChanges();

    int idBcDocumento = bcDoc.id_documento; // I NEED TO GET THIS ID INSERTED
    
    foreach (var z in movimientos)
    {
        var bcMovs = new bcMovimientos();
        bcMovs.id_documento = idBcDocumento; // TO INSERT HERE IN THE DETAIL TABLE
        dbLocal.bcMovimientos.Add(bcMovs);

        dbLocal.SaveChanges();

        int idBcMovimiento = bcMovs.id_movimiento; // AND THEN GET THE NEW ID FO THE DETAIL
    }
}

If you have specified the id_documento field in the database as Identity , you can use the following code, otherwise change id_documento to Identity.如果您已将数据库中的id_documento字段指定为Identity ,则可以使用以下代码,否则将 id_documento 更改为 Identity。

int idBcDocumento = dbLocal.bcDocumentos.OrderByDescending(p => p.id_documento).First().id_documento;

full code完整代码

var remisiones = dbLocal.Database.SqlQuery<datosConsulta>(qDocumento).ToList();
       
foreach (var x in remisiones)
{
    var bcDoc = new bcDocumentos();
    bcDoc.cfecha = Convert.ToDateTime(x.CFECHA);
    dbLocal.bcDocumentos.Add(bcDoc);

    dbLocal.SaveChanges();

    int idBcDocumento = dbLocal.bcDocumentos.OrderByDescending(p => p.id_documento).First().id_documento; // I NEED TO GET THIS ID INSERTED
    
    foreach (var z in movimientos)
    {
        var bcMovs = new bcMovimientos();
        bcMovs.id_documento = idBcDocumento; // TO INSERT HERE IN THE DETAIL TABLE
        dbLocal.bcMovimientos.Add(bcMovs);

        dbLocal.SaveChanges();

        int idBcMovimiento = dbLocal.bcMovs.OrderByDescending(p => p.id_movimiento).First().id_movimiento; // AND THEN GET THE NEW ID FO THE DETAIL
    }
}

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

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