powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Странное поведение Entity Framework при вставке новой записи.
23 сообщений из 23, страница 1 из 1
Странное поведение Entity Framework при вставке новой записи.
    #38768266
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет
Не могу понять в чём дело. Из контекста получаю объект таблицы, создаю новый такой же объект, перегоняю все поля из первого в новый. Смотрел в отладчике, после того как управление покидает _db.Add, новый объект newSales.Field2 получает значение первого объекта. То есть:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void CreateNew(Sales item)
{

//сейчас входной item.Field2 = 9900
Sales newItem = new Sales();

newItem.Field1 = item.Field1;
newItem.Field2 = 4900;

_db.Add(newItem1);//здесь newItem.Field2=4900
_db.SaveChanges();//а здесь опять 9900
}



Кто-нибудь объяснит почему так может быть?
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768279
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rigorMortis
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void CreateNew(Sales item)
{
    Sales newItem = new Sales();

    newItem.Field1 = item.Field1;
    newItem.Field2 = 4900;

    _db.Add(newItem1);
    _db.SaveChanges();
}
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768286
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, это опечатка, сути не меняет. Так правильно.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void CreateNew(Sales item)
{

//сейчас входной item.Field2 = 9900
Sales newItem = new Sales();

newItem.Field1 = item.Field1;
newItem.Field2 = 4900;

_db.Add(newItem);//здесь newItem.Field2=4900
_db.SaveChanges();//а здесь опять 9900
}
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768523
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ни у кого никаких идей?
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768672
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да какие тут идеи, бред полнейший. Где-то сам тупанул и просишь нас размотать эту траву. Тут либо гадать на кофейной гуще, либо приаттачить демо проект, демонстрирующий "баг". Выбирай.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768741
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
codearticles.ru, я сам вижу что бред.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768805
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и. Твои действия?
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768815
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruНу и. Твои действия?
А не видно чтоль... орать "помогите" :)

"а здесь опять 9900" - это как проверялось?
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768888
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser, я выше дал намёк на "приаттачить демо проект". Но был не услышан... автор в вакууме.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768922
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
codearticles.ru, сейчас никакой демо прислать не могу, времени никто не даст его делать. Вот ещё другой вопрос по той же теме. Пытаюсь сделать добавление в БД, на строке _referencebooksEntities.SalesOrganizers.Add(newItem) вылетает исключение:

Коллекция была изменена; невозможно выполнить операцию перечисления.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        public void _SalesOrganizers_Add(SalesOrganizers item)
        {
            SalesOrganizers newItem = new SalesOrganizers();
            newItem.Company_ID = 0;
            newItem.DateCreated = DateTime.Now;
            newItem.UserCreated = _user.User_ID;
            newItem.DateModified = DateTime.Now;
            newItem.UserModified = _user.User_ID;


            _referencebooksEntities.SalesOrganizers.Add(newItem);//здесь выбрасывается исключение
            _referencebooksEntities.SaveChanges();
        }  




Никаких действий с коллекцией _referencebooksEntities.SalesOrganizers до этого не производилось.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768963
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rigorMortiscodearticles.ru, сейчас никакой демо прислать не могу, времени никто не даст его делать.
Ну тогда могу посоветовать только гущу от кофе. Можно долго и упорно гадать на твой код.

rigorMortisВот ещё другой вопрос по той же теме.
См. выше.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38768989
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisНикаких действий с коллекцией _referencebooksEntities.SalesOrganizers до этого не производилось.Хрустальный шар подсказывает, что проблемы могут быть вызваны многопоточностью.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38769001
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
var lst = _referencebooksEntities.SalesOrganizers.ToList()


а какого типа объекты в этой коллекции?
может там такие: SalesOrganizer
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38769007
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не, точно нет потоков. Но выяснилось следующее. Вот сущность полностью. Там есть коллекция которая представляет сущности подчинённой таблицы Agencies:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    public partial class SalesOrganizers
    {
        public SalesOrganizers()
        {
            this.Agencies = new HashSet<Agencies>();
        }
    
        public int Company_ID { get; set; }
        public System.DateTime DateCreated { get; set; }
        public System.DateTime DateModified { get; set; }
        public int UserCreated { get; set; }
        public int UserModified { get; set; }
  
        public virtual ICollection<Agencies> Agencies { get; set; }

    }



и здесь если передать пустой список то запись успешно сохраняется.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        public void _SalesOrganizers_Add(SalesOrganizers item)
        {
            SalesOrganizers newItem = new SalesOrganizers();
            newItem.Company_ID = 0;
            newItem.DateCreated = DateTime.Now;
            newItem.UserCreated = _user.User_ID;
            newItem.DateModified = DateTime.Now;
            newItem.UserModified = _user.User_ID;
            newItem.Agencies = null; //передаём пустой список

            _referencebooksEntities.SalesOrganizers.Add(newItem);
            _referencebooksEntities.SaveChanges();
        }  



Если newItem.Agencies = item.Agencies то выбрасывается исключение

Коллекция была изменена; невозможно выполнить операцию перечисления.

item - это другая такая же сущность откуда копируются данные в новую и Agencies в том числе. Тогда как правильно перегнать Agencies из item в newItem? Там ведь должны быть id, которые ссылаются на новую сущность, а она ещё не создана.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38769121
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты бы уже давно тестовый солюшен сделал и скрипт таблички накидал. Жди гадалку.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38769232
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
codearticles.ru, но в предпоследнем моём посте уже другой вопрос, он проекта не требует.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38825255
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortis,

Вам необходимо разобраться для чего dbContext и как с ним работать. Без этого у Вас вряд ли что-то получится. Советую почитать

А еще крайне рекомендую при использовании EF в каждой динамической таблице создать PK типа uniqueidentifier.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38825266
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronА еще крайне рекомендую при использовании EF в каждой динамической таблице создать PK типа uniqueidentifier.
Зачем uniqueidentifier?
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38825320
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Потому что EF иногда не может распознать уникальность записи на update, если PK просто numeric. Это баг в EF, возможно, уже исправлен в последних версиях.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38825484
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronМСУ, Потому что EF иногда не может распознать уникальность записи на update, если PK просто numeric. Это баг в EF, возможно, уже исправлен в последних версиях.
Что за феерический бред? :)
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38826073
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я был неправ. Где-то пропустил это Правда, Uniqueidentifier необязательно использовать для PK...
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38826161
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronЯ был неправ
Сколько работал с L2S и EF, всё было замечательно.

AxeleronПравда, Uniqueidentifier необязательно использовать для PK...
Да его вообще не нужно использовать в прикладных задачах. Какие-то технические нюансы, разве что, реализовывать. Как то синхронизация, репликация, миграция, аутентфикация (SSO, к примеру) ну и так далее.
...
Рейтинг: 0 / 0
Странное поведение Entity Framework при вставке новой записи.
    #38826176
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Просто когда я столкнулся с этой проблемой, использовал SQL Server host'а с web-interface реализованный через *опу. Вот, видимо, и пропустил где-то, что int PK не Autoincrement. Прощу прощения, что ввел постом выше в заблуждение народ.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Странное поведение Entity Framework при вставке новой записи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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