Как можно избежать установки некоторых столбцов, если другие не изменились, при работе с Linq To SQL? - PullRequest
1 голос
/ 20 мая 2010

В LINQ to SQL я хочу избежать установки некоторых столбцов, если другие не изменились? Скажи, что у меня есть

dim row = (From c in dataContext.Customers Where c.Id = 1234 Select c).Single()
row.Name = "Example"
' line 3
dataContext.SubmitChanges()   ' line 4

Отлично, поэтому LINQ to SQL извлекает строку, устанавливает в памяти имя «Пример» и генерирует запрос SQL обновления только при необходимости , то есть SQL не будет генерироваться, если имя клиента уже было «Пример».

Итак, предположим, что в строке 3 я хочу определить, изменилась ли строка, и если да, установить row.UpdateDate = DateTime.Now. Если строка не изменилась, я не хочу устанавливать row.UpdateDate, чтобы SQL не генерировался. Есть ли хороший способ сделать это?

Ответы [ 2 ]

1 голос
/ 20 мая 2010

Вы можете реализовать что-то вроде этого, так как я не уверен, есть ли способ выполнить это по умолчанию, поскольку вы устанавливаете свойство.

Dim row = (From c in dataContext.Customers Where c.id = 1234 Select c).Single
if (row.Name <> "Example") Then
    row.Name = "Example"
    row.UpdateDate = DateTime.Now
End If
datacontext.SubmitChanges()

EDIT

Внутри класса datacontext есть событие PropertyChanged, к которому вы можете подключиться.

Так что вы могли бы сделать что-то вроде

AddHandler row.PropertyChanged, AddressOf UpdateRowDate

0 голосов
/ 20 мая 2010

Я не могу думать о реальном коде в голове, но, поскольку сущности Linq-to-SQL являются частичными классами, просто добавьте в них некоторую логику, чтобы проверить это. У каждого свойства есть события, когда они изменяются, поэтому в вашем частичном классе свяжите с событием измененного свойства и задайте UpdateDate для объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...