Обновление дочерних объектов ABP - PullRequest
1 голос
/ 01 марта 2020

Я пытаюсь работать с дочерними объектами в 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);
                }
            }

        }
    }

И я использую его вот так

    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);
    }

InsertaTelefonos(entity) метод вызывается из Actualizar метода

При вызове методов я получаю повторяющиеся записи в базе данных.

Что я делаю не так?

...