Dapper.Contrib может отслеживать изменения, если вы используете методы Get
и Update
и передаете Update
тот же объект (после внесения в него изменений), который вы получили с помощью Get
.
Отслеживание изменений в каждом поле не имеет значения. Измените одно поле, и вам все равно придется записывать всю запись.
Если вы действительно хотите изменить только одно поле (или два ...), не неся затрат на запись всей записи, вам нужно сделать это:
conn.Execute(
@"UPDATE MyTable SET MyField=@myParameter WHERE ID = @id",
new { myParameter = myNewValue, id=myID });
Примечание: вы можете найти поддержку для отслеживания изменений для каждого поля здесь . Этого нет в Dapper, потому что:
Это не то направление, в котором мы хотим go с Dapper. Если вам нужно полное отслеживание изменений или обновления для объектов, я бы порекомендовал один из ORM, который принимает эти дополнительные расходы, связанные с отслеживанием изменений, например Entity Framework. Это просто не то, что нам нужно в основной библиотеке Dapper. - Ник Крейвер