EF Core и необновление записи в тихую
От: LandWarrior  
Дата: 20.11.20 14:35
Оценка:
Вот такой код

var entry = _ctx.OrderDeatils
                           .FirstOrDefault(x => x.Manufacturer.ManId == manId
                           &&
                           !x.Deleted.HasValue);

            if (entry != null)
            {
                entry.Points = 0;
                var qq = _ctx.SaveChanges();
            }



До вызова SaveChanges() дело доходит. Только оно возвращает 0, и по логам никакого "UPDATE XXX" не случается. ЧЯДНТ? Трекинг не отключал, это 100%, если верить дебаггеру и значению AutoDetectChangesEnabled.
Отредактировано 20.11.2020 14:37 LandWarrior . Предыдущая версия .
Re: EF Core и необновление записи в тихую
От: BlackEric http://black-eric.lj.ru
Дата: 20.11.20 15:08
Оценка:
Здравствуйте, LandWarrior, Вы писали:

LW>Вот такой код


LW>
LW>var entry = _ctx.OrderDeatils
LW>                           .FirstOrDefault(x => x.Manufacturer.ManId == manId
LW>                           &&
LW>                           !x.Deleted.HasValue);

LW>            if (entry != null)
LW>            {
LW>                entry.Points = 0;
LW>                var qq = _ctx.SaveChanges();
LW>            }
LW>


Попробуйте указать iSModified = true для этого поля явно.
https://github.com/BlackEric001
Re[2]: EF Core и необновление записи в тихую
От: LandWarrior  
Дата: 20.11.20 16:56
Оценка:
LW>>Вот такой код

LW>>
LW>>var entry = _ctx.OrderDeatils
LW>>                           .FirstOrDefault(x => x.Manufacturer.ManId == manId
LW>>                           &&
LW>>                           !x.Deleted.HasValue);

LW>>            if (entry != null)
LW>>            {
LW>>                entry.Points = 0;
LW>>                var qq = _ctx.SaveChanges();
LW>>            }
LW>>


BE>Попробуйте указать iSModified = true для этого поля явно.


Без толку. Даже вызвал перед SaveChanges()
_ctx.Entry(entry).State = EntityState.Modified


— пофигу. Только SaveChanges() стал возвращать 1, и в логах полетел UPDATE запрос. Но в базе не поменялось ничего.
Re[3]: EF Core и необновление записи в тихую
От: takTak  
Дата: 20.11.20 17:40
Оценка:
LW>- пофигу. Только SaveChanges() стал возвращать 1, и в логах полетел UPDATE запрос. Но в базе не поменялось ничего.

может, там триггер какой на таблице висит и изменению мешает ?

кстати, может там уже

entry.Points == 0

?

ну или всё в памяти происходит, если это тест
Отредактировано 20.11.2020 18:06 takTak . Предыдущая версия .
Re[4]: EF Core и необновление записи в тихую
От: LandWarrior  
Дата: 20.11.20 19:47
Оценка:
Здравствуйте, takTak, Вы писали:

LW>>- пофигу. Только SaveChanges() стал возвращать 1, и в логах полетел UPDATE запрос. Но в базе не поменялось ничего.


T>может, там триггер какой на таблице висит и изменению мешает ?


T>кстати, может там уже


T>
T>entry.Points == 0
T>

T> ?

T>ну или всё в памяти происходит, если это тест


Неа, триггеров нет от слова совсем. И в этом поле в базе — 100. Да, база на PostgreSQL
Re[5]: EF Core и необновление записи в тихую
От: takTak  
Дата: 20.11.20 20:04
Оценка:
LW>>>- пофигу. Только SaveChanges() стал возвращать 1, и в логах полетел UPDATE запрос. Но в базе не поменялось ничего.

T>>может, там триггер какой на таблице висит и изменению мешает ?


T>>кстати, может там уже


T>>
T>>entry.Points == 0
T>>

T>> ?

T>>ну или всё в памяти происходит, если это тест


LW>Неа, триггеров нет от слова совсем. И в этом поле в базе — 100. Да, база на PostgreSQL



так пробывал?
using (var context = new DbContext())
{
...
}

если на столбце стоит атрибут [notmapped], то тоже ничего не будет

какая версия-то EF?

а ну ещё: пользователь, под которым это исполняется, имеет право писать в базу?


такое не установлено?

this.Configuration.AutoDetectChangesEnabled = false;
Отредактировано 20.11.2020 20:12 takTak . Предыдущая версия . Еще …
Отредактировано 20.11.2020 20:07 takTak . Предыдущая версия .
Re[6]: EF Core и необновление записи в тихую
От: LandWarrior  
Дата: 20.11.20 20:57
Оценка:
T>так пробывал?
T>using (var context = new DbContext())
T>{
T> ...
T>}

dbcontext создается за пределами репы и подтягивается туда средствами DI. И другие сущности вполне себе так апдейтятся.

T>если на столбце стоит атрибут [notmapped], то тоже ничего не будет


Нет там никаких атрибутов, кроме:



[Column("points")]
public decimal Points {get;set;}



T>какая версия-то EF?


EF Core 3.0
NpgSql 3.0.1


T>а ну ещё: пользователь, под которым это исполняется, имеет право писать в базу?


100%? в pgStudio сижу под ним и спокойно апдейтю все, что хочу.

T>такое не установлено?


T>
T>this.Configuration.AutoDetectChangesEnabled = false; 
T>



Оно в true сейчас
Отредактировано 20.11.2020 20:57 LandWarrior . Предыдущая версия .
Re[7]: EF Core и необновление записи в тихую
От: takTak  
Дата: 20.11.20 21:09
Оценка:
LW>

LW>[Column("points")]
LW>public decimal Points {get;set;}
LW>


ну так тогда это должно быть так :

Points = 0m;





T>>а ну ещё: пользователь, под которым это исполняется, имеет право писать в базу?


LW>100%? в pgStudio сижу под ним и спокойно апдейтю все, что хочу.



а в connectionString что установлено?


можешь посмотреть в дебаге после присвоения, что там внутри context.ChangeTracker.Entries()
Re[3]: EF Core и необновление записи в тихую
От: varenikAA  
Дата: 14.12.20 05:38
Оценка: +1
Здравствуйте, LandWarrior, Вы писали:

LW>- пофигу. Только SaveChanges() стал возвращать 1, и в логах полетел UPDATE запрос. Но в базе не поменялось ничего.


Покажи UPDATE ....
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: EF Core и необновление записи в тихую
От: namespace  
Дата: 14.12.20 18:40
Оценка:
LW>- пофигу. Только SaveChanges() стал возвращать 1, и в логах полетел UPDATE запрос. Но в базе не поменялось ничего.
Сделай явный коммит транзакции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.