63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
||||||||||||||||
1 | ||||||||||||||||
Странная проблема с UoW?22.02.2021, 11:34. Показов 2997. Ответов 3
Форумчане здравствуйте, столкнулся с странной проблемой, и не могу понять где я накосячил.
Есть два метода, Post и соответственно Get
Ошибка выскакивает в методе репозитория
Кликните здесь для просмотра всего текста
System.InvalidOperationException: 'Attaching an entity of type 'MVCStore.Domain.Core.Category' failed because another entity of the same type already has the same primary key value. This can happen when using the 'Attach' method or setting the state of an entity to 'Unchanged' or 'Modified' if any entities in the graph have conflicting key values. This may be because some entities are new and have not yet received database-generated key values. In this case use the 'Add' method or the 'Added' entity state to track the graph and then set the state of non-new entities to 'Unchanged' or 'Modified' as appropriate.'
Я игрался и так и сяк, и не пойму в чём проблема, взгляните свежим взглядом, может вы увидите ошибку..
0
|
22.02.2021, 11:34 | |
Ответы с готовыми решениями:
3
NInject, паттерны репозиторий и UoW Странная проблема с датами в MSSQL Странная проблема с delete: ADODB.Recordset (0x800A0E78) Operation is not allowed when the object is closed Странная проблема |
3458 / 2470 / 695
Регистрация: 02.08.2011
Сообщений: 6,692
|
||||||
22.02.2021, 11:48 | 2 | |||||
Сообщение было отмечено Anvean как решение
Решение
Anvean, это происходит так как EF закэшировала найденную ранее сущность. Далее при установке State идет поиск уже имеющихся сущностей в кэше DbContext-а.
Тут несколько вариантов решения: 1. Либо не кэшировать (с помощью AsNoTracking). 2. Либо искать в кэше, если найден - переписать свойства и установить State в Modified, если не найден - то сразу установить State в Modified. Добавлено через 5 минут Ну так конечно, если вы достали сущность, то при последующем POST-запросе будет найдена эта же самая сущность. Проверка на уникальность по полю Name предполагает, что сущности должны быть разные в контексте базы (то есть с разным PK). Поэтому надо откорректировать проверку условия:
1
|
63 / 55 / 10
Регистрация: 12.02.2019
Сообщений: 303
|
|
22.02.2021, 12:08 [ТС] | 3 |
IamRain, Господи, точно! Спасибо вам большое.
0
|
3458 / 2470 / 695
Регистрация: 02.08.2011
Сообщений: 6,692
|
|
22.02.2021, 12:14 | 4 |
Anvean, господь тут не причем.
Магии никакой нету, просто нужно понимать что тут происходит. And how things work.
3
|
22.02.2021, 12:14 | |
22.02.2021, 12:14 | |
Помогаю со студенческими работами здесь
4
Странная проблема с ПК Странная проблема с пк Странная проблема Странная проблема Странная проблема Странная проблема с Windows 7 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |