powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / При редактировании записи возникает ошибка
2 сообщений из 2, страница 1 из 1
При редактировании записи возникает ошибка
    #39206774
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
День добрый, госопода подскажите пожалуйста почему может возникать при редактировании ИНОГДА такая вот ошибка

Attaching an entity of type 'MyEntity' 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.

при выполнении вот этого кода.
Код: c#
1.
dbContext.Entry(entity).State = EntityState.Modified;



в ошибке пишут 1 что выполняется Аттачинг записи с одинаковым ключом. Хм почему в каких-то случаях возникает, а в каких-то нет? Как красиво сделать проверку того что уже есть этот ключ?

в ошибке пишут 2 что как вариант некоторые сущьности могут иметь новые записи не посланные в базу, но это не так.

вот такое временное решение нашел, но что-то уж больно оно не одназначное чтоли ))
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    public abstract class UnitOfWorkBase<TContext> : IUnitOfWork<TContext> where TContext : DbContext
    {
        public void RegisterAsUpdated(object entity)
        {
            var pkey = entity.GetType().GetProperty("Id").GetValue(entity);
            var localEntity = dbContext.Set(entity.GetType()).Find(pkey);
            dbContext.Entry(localEntity).CurrentValues.SetValues(entity);
            //dbContext.Entry(entity).State = EntityState.Modified;
        }



Заранее спасибо за ответы.
...
Рейтинг: 0 / 0
При редактировании записи возникает ошибка
    #39206777
Артем G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что-то около 9 часов на эту муть убил (((
думал сначала с налету решить ... после 6 часов возни понял что так не получиться )))
искать решение осознано начал за 20 мин до того, как нашел решение )

.AsNoTracking() рулит.

This happened to me while updating model from viewmodel and changing its State to Modified.
Before save, I wanted to check model property values existing in the database.
The solution is to use AsNoTracking() with your query. This way newly retrieved object won’t be tracked by the context. That means context will not recognize that the object has the same Id as a primary key value.
взято вот отсюда линк
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / При редактировании записи возникает ошибка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]