powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF6 некорректная вставка записи
4 сообщений из 4, страница 1 из 1
EF6 некорректная вставка записи
    #39346227
Всем доброго времени суток. Подскажите не могу разобраться в чем проблема. Есть функция:

Код: c#
1.
2.
3.
4.
5.
6.
7.
public static void Insert<TEntity>(TEntity entity) where TEntity : class
        {
            TUDBContext.TUDBContext db = new TUDBContext.TUDBContext();

            db.Entry(entity).State = System.Data.Entity.EntityState.Added;
            db.SaveChanges();
        }



Добавляем с ее помощью запись:

Код: c#
1.
2.
3.
4.
5.
6.
7.
District distr = new District
                {
                    name = TBDistrictName.Text,
                    region = regionRep.region.Where(r => r.id == (int)CBRegionName.SelectedValue).FirstOrDefault()
                };                

                Repository.Insert(distr);



District добавляется, но сначала добавляется Region и District привязывается к этому добавленному региону
...
Рейтинг: 0 / 0
EF6 некорректная вставка записи
    #39346236
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_1984,

проблема в реализации репозитория. все преимущества EF сведены практически к нулю. зачем Insert каждый раз создаёт контекст? зачем это шаманство с Entity.State?

естественно, что запись Region из чужого контекста добавляется ещё раз, новый созданный контекст в функции Insert ничего не знает о других объектах.

работайте с одним единым контекстом, избегайте костылей с ручной установкой State. не надо создавать контекст на каждый чих! контекст обычно создаётся на транзакцию, в рамках которой происходит вся работа, и может быть извлечено, создано и изменено много записей. закончили работу, сделали SaveChanges -- уничтожили контекст, и никаких ошмётков не осталось.
...
Рейтинг: 0 / 0
EF6 некорректная вставка записи
    #39346511
hVostt,

Спасибо за подсказку, я подозревал что контекст тут лишний ))
не пойму как ставить state не вручную? откуда его взять можно?
...
Рейтинг: 0 / 0
EF6 некорректная вставка записи
    #39346549
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр_1984не пойму как ставить state не вручную? откуда его взять можно?

Контекст сам различает новые и изменённые записи. Установка вручную требуется для переопределения работы контекста и её следует избегать.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / EF6 некорректная вставка записи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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