powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
25 сообщений из 54, страница 1 из 3
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619652
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ошибке написано, что в объекте не установлено поле, которое является ссылкой на другой объект.

А самое волшебство в том, что если поставить точку останова, то все работает нормально!

Вот вырезка из кода:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
  // Это таблица 
 public class Account
    {
        //код пользователя
        [Key]
        public int Object_Id {get; set;}
        [Required]
        public virtual Company CompanyOwner { get; set; }
        public string Login { get; set; }
        public string Password { get; set; }
        public virtual Account UserOwner { get; set; }
        [Required]
        public virtual AccountGroup AGroup { get; set; } 
    }


  //   Это код

   MyAppContext db = new MyAppContext();

   Account currentAccount = db.Accounts.FirstOrDefault(x => x.Object_Id == AccountId);
   currentAccount.Password = NewPassword;
   try
            {
                db.SaveChanges();
            }
            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
            {
              Вот сюда и вываливается ссылаясь на то, что не установлены поля: CompanyOwner и AccountGroup
            }



Но если установить точку останова на db.SaveChanges();, а потом просто продолжить, то все работает.

Наиболее вероятная причина - не успевает все подгружаться ...
Как вообще быть?

ЗЫ
Прошу сильно не пинать - я только начал изучать это место ...
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619658
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все вызовы синхронные, то это странно. Покажи оригинальный текст ошибки валидации, а не интерпретацию.
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619661
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanekНаиболее вероятная причина - не успевает все подгружаться ...Поля с ленивой загрузкой. Возможно, при точке останова отладчик эти поля дочитывает, чтобы показать тебе свойства объекта, потом ты его успешно сохраняешь.

Ты не указываешь в Entity-классе ключи для этих полей. Сами поля ленивые и тоже не заполнены. Вот при сохранении и ругается - ему неоткуда взять информацию об этих полях. Либо добавь свойства CompanyOwnerId и AccountGroupId, либо Include
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619662
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
db.Accounts.Include("Company").Include("AccountGroup").First...
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619686
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Спасибо помогло !!!

Только:
Код: c#
1.
Account currentAccount = db.Accounts.Include("CompanyOwner").Include("AGroup").FirstOrDefault(x => x.Object_Id == AccountId);




Shocker.Pro, авторПоля с ленивой загрузкой. Где почитать?
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619690
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanek,
Еще вот так попробуй. Интересно, поможет?
db.Accounts.FirstOrDefault(x => x.Object_Id == AccountId). ToList()
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619693
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще вопрос "вдогонку"

Как можно обойти такие конструкции
Код: c#
1.
db.Accounts.Include("CompanyOwner").Include("AGroup").FirstOrDefault(x => x.Object_Id == AccountId);



Я в том смысле, что таблицы переименовываются ... и если использовать запросы в таком виде, то ошибку можно отловить только в процессе исполнения ...

Как-то можно ведь прямо на таблицу ссылаться?
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619696
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нравится мне такая ошибка.
Апдейт одного поля.
Оба FK не трогаются.
Какого фига ОРМ не разрулил ситуацию непонятно.
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619697
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что значит переименовываются? у вас EF перестанет работать модель данных
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619698
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Нельзя сделать ToList для FirstOrDefault )))
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619699
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanekКак можно обойти такие конструкциипроверь мой код выше
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619702
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneчто значит переименовываются? у вас EF перестанет работать модель данныхон о том что компилятор не даст ошибку. Промолчит.
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619703
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanekКак можно обойти такие конструкции
1) nameof
2) перегруженный метод Include, который принимает не string, а expression
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619704
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,

Ну технически я не программу делаю, а в конструкторе играюсь что бы модель нормальную сделать ...
просто модель тестирую. ... а когда ошибки нахожу - меняю модель данных ))) вот тут и рождаются проблемы ...

а при смене модели (в т.ч. имен таблиц, полей и т.п.) базу перестраиваю и все )
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619706
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanekPetro123,

Нельзя сделать ToList для FirstOrDefault )))тьфу ты)))
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619708
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Какого фига ОРМ не разрулил ситуацию непонятно.ОРМ не знает, трогались поля или нет. Чтобы знал, достаточно добавить свойства в модель, как я писал выше. Они все равно есть в базе, они все равно потом понадобятся и не надо будет лишнее инклюдить - лишний трафик
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619709
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanekавторПоля с ленивой загрузкой. Где почитать?google entity framework lazy loading
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619711
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sanek,
Дай сам запрос что идет в базу.
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619712
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanekКак можно обойти такие конструкцииShocker.ProЛибо добавь свойства CompanyOwnerId и AccountGroupId...
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619714
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС,
в описание Account надо добавлять
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619715
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Sanek,
Дай сам запрос что идет в базу.
Делом займись
Petro123Желающим увидеть код, сегодня попробую.мы ждем
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619716
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Криминала не вижу )


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
exec sp_executesql N'SELECT 
    [Limit1].[Object_Id] AS [Object_Id], 
    [Limit1].[Login] AS [Login], 
    [Limit1].[Password] AS [Password], 
    [Limit1].[Object_Id1] AS [Object_Id1], 
    [Limit1].[CompanyName] AS [CompanyName], 
    [Limit1].[Owner_Object_Id] AS [Owner_Object_Id], 
    [Limit1].[Object_Id2] AS [Object_Id2], 
    [Limit1].[GroupName] AS [GroupName], 
    [Limit1].[UserOwner_Object_Id] AS [UserOwner_Object_Id]
    FROM ( SELECT TOP (1) 
        [Extent1].[Object_Id] AS [Object_Id], 
        [Extent1].[Login] AS [Login], 
        [Extent1].[Password] AS [Password], 
        [Extent1].[UserOwner_Object_Id] AS [UserOwner_Object_Id], 
        [Extent2].[Object_Id] AS [Object_Id1], 
        [Extent2].[CompanyName] AS [CompanyName], 
        [Extent2].[Owner_Object_Id] AS [Owner_Object_Id], 
        [Extent3].[Object_Id] AS [Object_Id2], 
        [Extent3].[GroupName] AS [GroupName]
        FROM   [dbo].[Accounts] AS [Extent1]
        INNER JOIN [dbo].[Companies] AS [Extent2] ON [Extent1].[CompanyOwner_Object_Id] = [Extent2].[Object_Id]
        INNER JOIN [dbo].[AccountGroups] AS [Extent3] ON [Extent1].[AGroup_Object_Id] = [Extent3].[Object_Id]
        WHERE [Extent1].[Object_Id] = @p__linq__0
    )  AS [Limit1]',N'@p__linq__0 int',@p__linq__0=1
go
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619717
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProОРМ не знает, трогались поля или нет.
Читал что он снимок делает.
Если он умный то пойдет update field одного поля.
Он не умеет?
Про свойства не понял. Всегда грузить все fk?
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619719
Sanek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

Код: sql
1.
2.
3.
4.
5.
exec sp_executesql N'UPDATE [dbo].[Accounts]
SET [Password] = @0
WHERE ([Object_Id] = @1)
',N'@0 nvarchar(500),@1 int',@0=N'41890cd2ac71e06b5f2c9ad5ccc07b45',@1=1
go
...
Рейтинг: 0 / 0
При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
    #39619720
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Petro123Sanek,
Дай сам запрос что идет в базу.
Делом займись
Petro123Желающим увидеть код, сегодня попробую.мы ждемя же там оставил код. Не понял тебя.
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / При вызове DbContext.SaveChanges() возникает исключение DbEntityValidationException
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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