插入多条记录问题(linq EF)

发布于 2024-12-10 03:56:12 字数 1696 浏览 0 评论 0原文

我需要将多条记录插入到不同的表中,问题是某些表有 2 个不同的外键,并且 EF 抛出异常。我的架构的一部分如下所示。 在此处输入图像描述

这是我的代码

  Credito cred = new Credito()
            {
                Producto = credito.producto,
                Tipo = credito.tipo,
                Status = credito.status,
                Cantidad = credito.monto_prestamo,
                TasaInteres = credito.tasa_interes,
                Plazo = credito.plazo,
                Periodo = credito.periodo,
                FechaInicio = credito.fecha_inicio
            };
            Cuentas cuenta = new Cuentas()
            {
                IDCredito = credito.idCredito,
                IDBanco = credito.idBanco
            };
            Grupo gpo = new Grupo()
            {
                Nombre = credito.grupo,
                IDRepre = credito.idRepGpo
            };

            context.creditos.AddObject(cred);
            context.bancos_credito.AddObject(cuenta);
            for (int i = 0; i < credito.total_plazo; i++)
                context.amortizaciones.AddObject(AgregaAmortizacion(ref fechaPago, i, credito));
            context.grupos.AddObject(gpo);
            for (int i = 0; i < renglones; i++)
            {
                context.acreditados.AddObject(AgregaAcreditado(i, credito));
                context.agrupaciones.AddObject(AgregaAgrupacion(i, credito));
            }
            context.SaveChanges();

除了“context.agrupaciones.AddObject(AgregaAgrupacion(i, Credito)) 之外的所有内容” ” 很好。这里的问题是,即使我将“grupos”和“acreditados”对象添加到上下文中,“agrupaciones”也有 2 个 FK(id_acreditado、id_grupo)。 你知道发生了什么事吗?实体框架是否无法在不指定值的情况下从两个表插入 FK? 希望有人可以帮助我,谢谢

I need to insert multiple records to different tables, the problem is that some tables have 2 different foreing keys and the EF throws me an exception. Part of my schema is shown below.
enter image description here

And this is my code

  Credito cred = new Credito()
            {
                Producto = credito.producto,
                Tipo = credito.tipo,
                Status = credito.status,
                Cantidad = credito.monto_prestamo,
                TasaInteres = credito.tasa_interes,
                Plazo = credito.plazo,
                Periodo = credito.periodo,
                FechaInicio = credito.fecha_inicio
            };
            Cuentas cuenta = new Cuentas()
            {
                IDCredito = credito.idCredito,
                IDBanco = credito.idBanco
            };
            Grupo gpo = new Grupo()
            {
                Nombre = credito.grupo,
                IDRepre = credito.idRepGpo
            };

            context.creditos.AddObject(cred);
            context.bancos_credito.AddObject(cuenta);
            for (int i = 0; i < credito.total_plazo; i++)
                context.amortizaciones.AddObject(AgregaAmortizacion(ref fechaPago, i, credito));
            context.grupos.AddObject(gpo);
            for (int i = 0; i < renglones; i++)
            {
                context.acreditados.AddObject(AgregaAcreditado(i, credito));
                context.agrupaciones.AddObject(AgregaAgrupacion(i, credito));
            }
            context.SaveChanges();

Everything but the "context.agrupaciones.AddObject(AgregaAgrupacion(i, credito))" is fine. The issue here is that "agrupaciones" has 2 FK (id_acreditado, id_grupo) even when I'm adding "grupos" and "acreditados" objects to context.
Do you know what is happening? Does the entity framework is not capable of inserting FK from two tables withouth specifying the values?
Hope someone can help me, thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

绅士风度i 2024-12-17 03:56:12

看来问题是您只设置了 FK id(IDRepre、IDBanco)。通常,在 EF 中设置引用时,您使用整个对象 (cuenta.Credito = cred;)。

Credito cred = new Credito() 
        { 
            Producto = credito.producto, 
            Tipo = credito.tipo, 
            Status = credito.status, 
            Cantidad = credito.monto_prestamo, 
            TasaInteres = credito.tasa_interes, 
            Plazo = credito.plazo, 
            Periodo = credito.periodo, 
            FechaInicio = credito.fecha_inicio 
        };
Cuentas cuenta = new Cuentas()   
        {   
            IDCredito = credito.idCredito,   
            IDBanco = credito.idBanco   
        }; 
cred.Cuentas.Add(cuenta);
... (more mapping code here)
context.credito.AddObject(cred); 
context.SaveChanges();

如果子对象设置正确,您应该只需要为父对象执行“AddObject”。

It looks like the issue is you are only setting the FK id (IDRepre, IDBanco). Usually when setting references in EF you use the entire object (cuenta.Credito = cred;).

Credito cred = new Credito() 
        { 
            Producto = credito.producto, 
            Tipo = credito.tipo, 
            Status = credito.status, 
            Cantidad = credito.monto_prestamo, 
            TasaInteres = credito.tasa_interes, 
            Plazo = credito.plazo, 
            Periodo = credito.periodo, 
            FechaInicio = credito.fecha_inicio 
        };
Cuentas cuenta = new Cuentas()   
        {   
            IDCredito = credito.idCredito,   
            IDBanco = credito.idBanco   
        }; 
cred.Cuentas.Add(cuenta);
... (more mapping code here)
context.credito.AddObject(cred); 
context.SaveChanges();

You should only need to do "AddObject" for the parent object if the children are set correctly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文