powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Dapper - обновление только изменившихся записей
13 сообщений из 13, страница 1 из 1
Dapper - обновление только изменившихся записей
    #39166196
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

В EF при обновлении записи, я обновлял только поля, которые изменились:

Код: c#
1.
2.
3.
4.
...
if (recordDB.Title != recordBL.Title) { recordDB.Title = recordBL.Title; };
if (recordDB.is_publish != recordBL.IsPuplish) { recordDB.is_publish = recordBL.IsPuplish; };
...



там сначала получаем объект ЕФ с базы, затем каждое поле сверяем с новым (отредактированным) объектом и если отличаются то это поле обновляем....

а как с даппером? Погуглил не вижу. Обновлять всю запись состоящую из 30 полей если изменения произошли только в одном - как то накладно

спасибо.
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166210
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickОбновлять всю запись состоящую из 30 полей если изменения произошли только в одном - как то накладноВ курсе, что в MSSQL запись на диск производится страницами размером ~8 КБ, содержащими множество записей, даже если изменено только одно поле одной записи. Запись на диск - это самая медленная часть операции по изменению данных в БД.

Делай выводы о нужности твоей оптимизации.
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166238
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС а ты уверен что Ef обновлял только измененное поле а не целиком сущность? смотрел план запросов?
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166244
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuТС а ты уверен что Ef обновлял только измененное поле а не целиком сущность?Да, EF обновляет только изменённые поля, при определённых условиях.

Например:
Код: c#
1.
2.
Db.MyTable.First(v => v.ID == id).Value++;
Db.SaveChanges();
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166247
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuТС а ты уверен что Ef обновлял только измененное поле а не целиком сущность? смотрел план запросов?

да:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 db.Facilities.Attach( facility );
    DbEntityEntry entry = db.Entry( facility );
    foreach( var propertyName in entry.OriginalValues.PropertyNames )
    {
      var original = entry.GetDatabaseValues().GetValue<object>(propertyName);
      var current = entry.GetCurrentValues.GetValue<object>(propertyName);
      if(!object.Equals(original, current))
      {
        entry.Property( propertyName ).isModified = true;
      }
    }
    db.SaveChanges();
  }
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166248
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

хм ...про такое не знал, конкретно по полям в еф делалось вроде как так, если память мне не изменяет
Код: c#
1.
entry.Property( propertyName ).isModified = true;
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166249
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSputnickОбновлять всю запись состоящую из 30 полей если изменения произошли только в одном - как то накладноВ курсе, что в MSSQL запись на диск производится страницами размером ~8 КБ, содержащими множество записей, даже если изменено только одно поле одной записи. Запись на диск - это самая медленная часть операции по изменению данных в БД.

Делай выводы о нужности твоей оптимизации.

ну а если запись содержит поле текста на пару сотен килобайт, зачем же гонять от клиента (бог знает где он расположен) на сервер?
Если это возможно, а это наверняка возможно, то лучше сделать как положено.
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166250
handmadeFromRu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sputnick,
дапер эт не в полне орм, тут либ свой велик либ к примеру расширение Rainbow
https://liangwu.wordpress.com/2012/08/28/dapper-net-tutorial-iii/
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166251
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
handmadeFromRuАлексей К,

хм ...про такое не знал, конкретно по полям в еф делалось вроде как так, если память мне не изменяет
Код: c#
1.
entry.Property( propertyName ).isModified = true;

EF сам всё сравнит на изменения если сущность прочитана из БД, а не присоединена через Attach.

Entity Framework Automatic Detect Changes
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166253
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SputnickАлексей Кпропущено...
В курсе, что в MSSQL запись на диск производится страницами размером ~8 КБ, содержащими множество записей, даже если изменено только одно поле одной записи. Запись на диск - это самая медленная часть операции по изменению данных в БД.

Делай выводы о нужности твоей оптимизации.

ну а если запись содержит поле текста на пару сотен килобайт, зачем же гонять от клиента (бог знает где он расположен) на сервер?
Если это возможно, а это наверняка возможно, то лучше сделать как положено.В ситуации с Dapper я бы не стал искать общего решения. Я бы это оптимизировал в конкретных местах, по необходимости.
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166255
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КhandmadeFromRuАлексей К,

хм ...про такое не знал, конкретно по полям в еф делалось вроде как так, если память мне не изменяет
Код: c#
1.
entry.Property( propertyName ).isModified = true;

EF сам всё сравнит на изменения если сущность прочитана из БД, а не присоединена через Attach.

Entity Framework Automatic Detect Changes

EF сам всё сравнит на изменения
----

но при этом ЕФ производит дополнительную обработку и выделяет дополнительное место для кеша. Потом когда сталкиваешься с медленной работой ЕФ приходиться все это учитывать.
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166256
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КSputnickпропущено...


ну а если запись содержит поле текста на пару сотен килобайт, зачем же гонять от клиента (бог знает где он расположен) на сервер?
Если это возможно, а это наверняка возможно, то лучше сделать как положено.В ситуации с Dapper я бы не стал искать общего решения. Я бы это оптимизировал в конкретных местах, по необходимости.

понял, нужен велосипед )

спасибо.
...
Рейтинг: 0 / 0
Dapper - обновление только изменившихся записей
    #39166259
Фотография Sputnick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кажись нашел - https://liangwu.wordpress.com/2012/08/28/dapper-net-tutorial-iii/

смущает только то что пакет довольно старый.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Dapper - обновление только изменившихся записей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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