Entity framework core 更新子实体ABP

Entity framework core 更新子实体ABP,entity-framework-core,aspnetboilerplate,Entity Framework Core,Aspnetboilerplate,我试图在ABP中处理子实体,但是当我调用存储库方法时,什么都没有发生,我这样做的方式是删除所有记录并再次插入,当调用方法时,我得到了重复的条目 我在DomainService层使用它这是我的经理 using Abp.Domain.Repositories; using Abp.Domain.Services; using DomiSys.Prestamos.Models.Generales.ClienteFuturoNs.DireccionClienteFuturoNs;

我试图在
ABP
中处理子实体,但是当我调用存储库方法时,什么都没有发生,我这样做的方式是删除所有记录并再次插入,当调用方法时,我得到了重复的条目

我在
DomainService
层使用它这是我的经理

    using Abp.Domain.Repositories;
    using Abp.Domain.Services;
    using DomiSys.Prestamos.Models.Generales.ClienteFuturoNs.DireccionClienteFuturoNs;
    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;

    namespace DomiSys.Prestamos.Models.Generales.DireccionClienteFuturoNs
    {
        public class DireccionClienteFuturoManager : DomainService, IDireccionClienteFuturoManager
        {
            private readonly IRepository<DireccionClienteFuturo> _direccionClienteFuturoRepository;

            public DireccionClienteFuturoManager(IRepository<DireccionClienteFuturo> direccionClienteFuturoRepository)
            {
                LocalizationSourceName = PrestamosConsts.LocalizationSourceName;
                _direccionClienteFuturoRepository = direccionClienteFuturoRepository;
            }


            public async Task<DireccionClienteFuturo> Registrar(DireccionClienteFuturo entity)
            {
                return await _direccionClienteFuturoRepository.InsertAsync(entity);
            }

            public async void Eliminar(DireccionClienteFuturo entity)
            {
                await _direccionClienteFuturoRepository.DeleteAsync(entity);
            }

            public async void EliminarTodo(int clienteId)
            {
                var list = _direccionClienteFuturoRepository.GetAll().Where(x => x.ClienteFuturoId == clienteId).ToList();
                foreach (var item in list)
                {
                    await _direccionClienteFuturoRepository.DeleteAsync(item);
                }
            }

            public async void RegistrarLista(IEnumerable<DireccionClienteFuturo> lista)
            {
                foreach (var item in lista)
                {
                    item.Id = 0;
                    await _direccionClienteFuturoRepository.InsertAsync(item);
                }
            }

        }
    }
使用Abp.Domain.Repositories;
使用Abp.Domain.Services;
使用DomiSys.Prestamos.Models.Generales.clientfuturons.direccionclientfuturons;
使用Microsoft.EntityFrameworkCore;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
命名空间DomiSys.Prestamos.Models.Generales.direccionclientfuturons
{
公共类direccionclientfuturomanager:DomainService,idireccionclientfuturomanager
{
私有只读IRepository\u direccionClientFuturoRepository;
公共DireccionClientFuturoManager(iReccionClientFuturoRepository)
{
LocalizationSourceName=PrestamosConsts.LocalizationSourceName;
_DireccionClientFuturoRepository=DireccionClientFuturoRepository;
}
公共异步任务注册器(DireccionClientFuturo实体)
{
return await_direccionclientfuturorepository.InsertAsync(实体);
}
公共异步void Eliminar(direccionclientfuturo实体)
{
await_direccionClientFuturoRepository.DeleteAsync(实体);
}
公共异步void EliminarTodo(int客户端ID)
{
var list=\u direccionClientFuturoRepository.GetAll().Where(x=>x.ClientFuturoid==clienteId.ToList();
foreach(列表中的变量项)
{
Wait_direccionClientFuturoRepository.DeleteAsync(项目);
}
}
公共异步无效注册状态(IEnumerable lista)
{
foreach(列表A中的变量项)
{
项目Id=0;
Wait_direccionClientFuturoRepository.InsertAsync(项目);
}
}
}
}
我就是这样用的

    private void InsertarDireccion(ClienteFuturo clienteNuevo)
    {
        _direccionClienteFuturoManager.EliminarTodo(clienteNuevo.Id);
        _direccionClienteFuturoManager.RegistrarLista(clienteNuevo.ListaDirecciones);
    }


    public Task<ClienteFuturo> Actualizar(ClienteFuturo entity)
    {

        Validar(entity);
        entity.SucursalId = usuario.SucursalId ?? 0;

        InsertaActualizaConyugue(entity);

        entity.FechaNacimiento = Shared.Shared.FormateaFecha(entity.FechaNacimiento);
        var result = _clienteRepository.Update(entity);

        InsertarTelefono(entity);
        InsertarEmail(entity);
        InsertarDireccion(entity);


        return Task.FromResult(result);
    }
private void InsertarDireccion(clientfuturo clienteNuevo)
{
_direccionclientfuturomanager.EliminarTodo(clienteNuevo.Id);
_直接客户未来经理。登记员(客户新员工名单);
}
公共任务实施者(客户未来实体)
{
Validar(实体);
entity.SucursalId=usuario.SucursalId±0;
扎康尤格(实体)插页;
entity.FechaNacimiento=Shared.Shared.FormateaFecha(entity.FechaNacimiento);
var result=\u clientrepository.Update(实体);
InsertarTelefono(实体);
InsertarEmail(实体);
插入报告(实体);
返回Task.FromResult(结果);
}
InsertaTelefonos(entity)
方法是从
Actualizar
方法调用的

当调用方法时,我在数据库中得到了重复的条目


我做错了什么?

你有我可以使用的例子吗?或者可以根据我的代码制作一个例子吗?堆栈溢出不是免费的编码服务。好的,兄弟,没问题,请确保这不是我希望你为我编码的,我只是说你在参与或开发的项目中的某个代码中有一个例子,不过别担心,我会查一查的,谢谢。你能更好地描述一下这个问题吗?什么不起作用?有几种方法,但不清楚哪种方法失败了,或者你想要的结果是什么。但我有一个预感:
clientfuturo实体是如何传入的?它以前是从数据库加载的吗?您可能需要了解如何在断开连接的场景中使用EF。另外,要修改子实体,您需要先加载它们。您有我可以使用的示例吗?或者可以根据我的代码制作一个示例吗?堆栈溢出不是免费的编码服务。好的,兄弟,没问题,请确保这不是我希望您为我编写的代码,我只是说您在参与或开发的项目中的某个代码中有一个示例,不过别担心,我会查一查的,谢谢。你能更好地描述一下这个问题吗?什么不起作用?有几种方法,但不清楚哪种方法失败了,或者你想要的结果是什么。但我有一个预感:
clientfuturo实体是如何传入的?它以前是从数据库加载的吗?您可能需要了解如何在断开连接的场景中使用EF。此外,要修改子实体,需要首先加载它们。