Отображение одного и того же типа объекта в Automapper (копирование полей из одного объекта в другой)

Имею следующее:

    public async Task<bool> Update(CoinEntity coinEntity)
    {

        var found = await context.Coins.FindAsync(coinEntity.CoinId);
        if (found==null)
        {
            throw new CoinNotFoundException(coinEntity.CoinId);
        }

        Mapper.Initialize(cfg => cfg.CreateMap<CoinEntity, CoinEntity>());
        found = Mapper.Map<CoinEntity>(coinEntity);
        await context.SaveChangesAsync();

        return true;


    }

Это работает в том смысле, что найденное имеет все свойства из переданного, однако я полагаю, потому что .Map создает новый экземпляр. Это больше не отслеживается EFCore, и SaveChanges ничего не изменилось.

Есть ли способ для automapper действительно обновить реальный объект вместо создания нового экземпляра?

Я просто хочу, чтобы мой объект found по-прежнему отслеживался EF после того, как automapper выполнит его сопоставление.

Я пытаюсь избежать копирования поля за полем, и использование .Attach of EF не вариант, потому что он не работает, так как мне нужно заменить записи дочерней таблицы (удаление некоторых, добавление некоторых)

Вы здесь не используете автомаппер. Вы можете вызвать статическую Initialize только один раз, но делайте это каждый раз, когда вызывается ваш метод. Переместите инициализацию куда-нибудь в начало потока кода. Если это ядро ​​asp.net, вы можете использовать сервис в области видимости automapper вместо статического доступа, который больше подходит для этого сценария.

ZorgoZ 18.12.2018 15:49

да, я знаю об этом, это было сделано только для того, чтобы убедиться, что он работает, прежде чем я его перенесу. Спасибо, что указали на это

Zoinky 18.12.2018 15:50

@AFriend это то, что я ищу, спасибо, ответил на мой вопрос

Zoinky 18.12.2018 15:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
173
0

Другие вопросы по теме