Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Странное поведение Entity Framework при вставке новой записи. / 23 сообщений из 23, страница 1 из 1
06.10.2014, 17:38
    #38768266
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Привет
Не могу понять в чём дело. Из контекста получаю объект таблицы, создаю новый такой же объект, перегоняю все поля из первого в новый. Смотрел в отладчике, после того как управление покидает _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
06.10.2014, 17:52
    #38768279
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
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
06.10.2014, 17:55
    #38768286
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Ну, это опечатка, сути не меняет. Так правильно.

Код: 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
06.10.2014, 22:48
    #38768523
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Ни у кого никаких идей?
...
Рейтинг: 0 / 0
07.10.2014, 09:15
    #38768672
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Да какие тут идеи, бред полнейший. Где-то сам тупанул и просишь нас размотать эту траву. Тут либо гадать на кофейной гуще, либо приаттачить демо проект, демонстрирующий "баг". Выбирай.
...
Рейтинг: 0 / 0
07.10.2014, 10:18
    #38768741
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
codearticles.ru, я сам вижу что бред.
...
Рейтинг: 0 / 0
07.10.2014, 11:19
    #38768805
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Ну и. Твои действия?
...
Рейтинг: 0 / 0
07.10.2014, 11:28
    #38768815
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
codearticles.ruНу и. Твои действия?
А не видно чтоль... орать "помогите" :)

"а здесь опять 9900" - это как проверялось?
...
Рейтинг: 0 / 0
07.10.2014, 12:09
    #38768888
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
buser, я выше дал намёк на "приаттачить демо проект". Но был не услышан... автор в вакууме.
...
Рейтинг: 0 / 0
07.10.2014, 12:27
    #38768922
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
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
07.10.2014, 12:47
    #38768963
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
rigorMortiscodearticles.ru, сейчас никакой демо прислать не могу, времени никто не даст его делать.
Ну тогда могу посоветовать только гущу от кофе. Можно долго и упорно гадать на твой код.

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


а какого типа объекты в этой коллекции?
может там такие: SalesOrganizer
...
Рейтинг: 0 / 0
07.10.2014, 13:12
    #38769007
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Не, точно нет потоков. Но выяснилось следующее. Вот сущность полностью. Там есть коллекция которая представляет сущности подчинённой таблицы 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
07.10.2014, 14:28
    #38769121
codearticles.ru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
Ты бы уже давно тестовый солюшен сделал и скрипт таблички накидал. Жди гадалку.
...
Рейтинг: 0 / 0
07.10.2014, 15:28
    #38769232
rigorMortis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
codearticles.ru, но в предпоследнем моём посте уже другой вопрос, он проекта не требует.
...
Рейтинг: 0 / 0
04.12.2014, 17:48
    #38825255
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение Entity Framework при вставке новой записи.
rigorMortis,

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

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

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

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

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


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