![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
||||||||||||||||||||||||||
Невозможно выполнить Update т.к. объект уже отслеживается11.02.2025, 16:34. Показов 1742. Ответов 24
Метки asp.net 8.0 (Все метки)
Пытаюсь обновить объект в бд, в запросе HttpPut, но получаю такое исключение:
0
|
11.02.2025, 16:34 | |
Ответы с готовыми решениями:
24
Добавить в уже существующий объект свойство и положить в него объект
Не работает UPDATE -уже замучался |
![]() |
|
11.02.2025, 16:52 | |
0
|
![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
|||||||||||
11.02.2025, 17:30 [ТС] | |||||||||||
Andrey-MSK, подключил EnableSensitiveDataLogging вот так:
0
|
![]() ![]() |
|
11.02.2025, 17:51 | |
![]() Решение
Дык, метод Map создает новый объект. Вы вычитали в dbContainer с настройкой "отслеживать", создали ещё один с таким же ID и пытаетесь запихнуть в контекст. Если используете автомапер, там вроде есть возможность указывать на какой объект применять мапинг, а не создавать новый.
1
|
![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
||||||||||||||||
12.02.2025, 12:12 [ТС] | ||||||||||||||||
Wolfdp, блин чего-то я не догоняю как именно копировать в этом автомапере, везде написано что это будет копировать данные:
профиль:
Т.е. в дебаге я вижу что мне приходит объект с полем 10, но в бдшный объект поле не копируется почему-то
0
|
![]() ![]() |
|
12.02.2025, 12:46 | |
Покажите обе ваши модели. Скорее всего автомапинг не разруливает автоматически по названию и нужно прописать в профиле.
1
|
![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
||||||||||||
12.02.2025, 12:59 [ТС] | ||||||||||||
0
|
![]() ![]() |
||
12.02.2025, 13:07 | ||
Единственное что отмечу -- такой подход плохой. Если нет четкой модели, которая явно ограничивает изменяемые поля, то появляються такие проблемы: - в запросе не прилетают все поля и заменяются на default, хотя они должны были остаться неизменные - проблемы безопасности, когда юзер инжектит изменения туда, куда не нужно
0
|
![]() ![]() |
||
12.02.2025, 13:22 | ||
1
|
![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
|
13.02.2025, 12:12 [ТС] | |
Wolfdp, Подскажите еще такой момент, на сколько адекватно использовать мапер в репозитории? просто судя по инфе в интернетах мапер это не уровень репозитория, а уровень сервисов и контроллеров, но на мой взглдя это не очень удобно, если его прокинуть в репозиторий, то там его использовать куда комфортнее и это позволяет инкапсулировать еще одну строку в контроллере в котором у меня и так дофига кода.
0
|
![]() ![]() |
|
13.02.2025, 12:46 | |
Ну смотрите:
- модель приходящая на endpoint -- уровень web api - мапер должен знать про эту модель - мапер должен знать про модель репозитория - в классическом подходе репозиторий ничего не должен знать про web api Если вы пропихиваете это в репозиторий, значит у вас инверсия зависимостей (такой подход тоже практикуют, но не часто). Грубо говоря ваш верхний уровень определяет контракт, а нижний должен его реализовывать. Если репозиторий вынести в отдельную либу, то: - классический подход поразумевает что web api будет ссылаться на репозиторй - инверсия -- репозиторий ссылается на web api. Я бы следовал классическому подходу, т.к. обычно гораздо легче определять логику хранения и где-то выше использовать, чем задавать правила выше и реализовывать. P.S. если у вас прям горит задача -- запихните чтобы работало и добавьте TODO + тикет на рефакторинг. Потом выделите время и приведете в порядок. Если нет -- лучше разобраться почему мапер не работает.
2
|
![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
||||||
13.02.2025, 12:51 [ТС] | ||||||
Wolfdp, Спасибо, c мапером я разобрался проблема была в кривых руках(не правильно создал профиль)
0
|
![]() 10 / 10 / 0
Регистрация: 13.02.2025
Сообщений: 19
|
||
13.02.2025, 14:17 | ||
0
|
![]() ![]() |
|||
13.02.2025, 14:28 | |||
Не по теме:
Добавлено через 3 минуты Если уже используете, я не вижу особого смысла перелопачивать архитектуру.
1
|
![]() 10 / 10 / 0
Регистрация: 13.02.2025
Сообщений: 19
|
||
13.02.2025, 14:29 | ||
2. Если вам нужно в один момент времени "копировать" такой объем данных, что с ним справится только маппер - значит нужно пересмотреть архитектуру. 3. Самая большая проблема маппера, что к нему быстро привыкаешь, а потом в нем начинает "плодиться" логика. 4. Копирование БД при помощи маппера? Серьезно? Это как?
1
|
![]() 25 / 25 / 4
Регистрация: 21.01.2019
Сообщений: 405
|
|||||||
13.02.2025, 14:47 [ТС] | |||||||
0
|
![]() 10 / 10 / 0
Регистрация: 13.02.2025
Сообщений: 19
|
|||||||
13.02.2025, 15:03 | |||||||
Например, так:
Если на ваш взгляд без маппера никак, то так тому и быть ![]()
1
|
13.02.2025, 15:03 | |
Помогаю со студенческими работами здесь
20
Не срабатывает UPDATE к уже имеющемуся значению update.... в поиске не нашел... а решить уже не в состоянии Update, если ячейка уже есть в базе Невозможно создать файл так как он уже существует Невозможно создать рзадел или испоьзовать уже существующий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
![]() |
||||
Размещения без повторений
VistaSV30 31.05.2025
Код возвращает список вариантов размещений
A^{k}_{n}=\frac{n!}{(n-k)!}
from itertools import permutations
def pwr(k, n): # Размещение без повторений (Placement without repetition)
if k. . .
|
Redis и Node.js с TypeScript - решения для высоконагруженных систем
Reangularity 31.05.2025
Redis (Remote Dictionary Server) — сверхбыстрое хранилище данных в памяти, способное обрабатывать операции за микросекунды. И что особенно важно для нас — с удивительно простым API. А теперь. . .
|
Unit-тестирование с моками в Go
golander 31.05.2025
Большинство разработчиков предпочитают тестировать код без использования моков. Например, при интеграции с Elasticsearch логичнее запустить контейнер локально и тестировать Go-код непосредственно с. . .
|
Как работать с PDF в C#
stackOverflow 31.05.2025
Нам приходится сталкиваться с PDF по разным причинам. Генерация счетов, создание отчетов, извлечение данных из загруженных пользователем документов, автоматизация рабочих процесов - это лишь верхушка. . .
|
Двухбуквенные коды стран в шифровании.
russiannick 31.05.2025
Человечество издревле манила возможность замены сочетаний букв вымышленными символами, делающие сообщение понятным только для посвещенных. Настала пора внести в это свой вклад. Двухбуквенные коды. . .
|
Мой опыт в исправлении ошибки приложения Boinc в части заряда батареи смартфона.
Programma_Boinc 31.05.2025
Мой опыт в исправлении ошибки приложения Boinc в части заряда батареи смартфона.
Хотел бы поделиться опытом в исправлении ошибки приложения в части заряда батареи смартфона. Сразу скажу, что. . .
|
Добро пожаловать на конкурс PrimeGrid, посвященный 20-летию PrimeGrid
Programma_Boinc 31.05.2025
Добро пожаловать на конкурс PrimeGrid, посвященный 20-летию PrimeGrid:
5-дневный обобщенный поиск простых чисел Ферма n = 20 с 12 июня 20:20 UTC по 17 июня 20:20 UTC.
12 июня 2005 года. . .
|
Вероятность в шансы / Шансы в вероятность
VistaSV30 31.05.2025
# Шансы -> Вероятность
def Chance_to_Probability(ch):
def gcd(a, b): # НОД - нужен для упрощения значений шансов
while b != 0:
a, b = b, a % b
return a. . .
|
FastAPI и Flask: Отличия, производительность и примеры использования
py-thonny 30.05.2025
Если вы разрабатываете веб-приложения на Python, вы наверняка слышали о Flask и FastAPI. Эти два фреймворка часто становятся предметом жарких дискуссий в сообществе разработчиков. И не без основания. . .
|
ML.NET и TensorFlow.NET: Умные приложения на C# с машинным обучением
stackOverflow 30.05.2025
Еще совсем недавно, когда речь заходила о машинном обучении, C# разработчики обреченно вздыхали и тянулись к Python. Мир искуственного интеллекта словно был огражден невидимым забором с табличкой. . .
|