Linq-To-Sql с отключенными метками времени WCF, моделями и POCO ViewModels "DataContext" / метка времени - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть класс репозитория на основе Linq-To-Sql, который я успешно использую. Я добавляю к решению некоторые функциональные возможности, которые обеспечат доступ к базе данных на основе WCF.

Я не выставил сгенерированные классы Linq как DataContracts, вместо этого я создал свой собственный "ViewModel" как POCO для каждой сущности, которую я собираюсь возвращать.

Мой вопрос заключается в том, чтобы для обновления и использования некоторых функций Linq-To-Sql, таких как циклические ссылки из моей службы, нужно ли мне добавлять поле Rowversion / Timestamp для каждой таблицы в базе данных, Я могу использовать код как dc.Table.Attach(myDisconnectedObject)? Альтернатива, кажется некрасивой:

var updateModel = dc.Table.SingleOrDefault(t => t.ID == myDisconnectedObject.ID);
updateModel.PropertyA = myDisconnectedObject.PropertyA;
updateModel.PropertyB = myDisconnectedObject.PropertyB;
updateModel.PropertyC = myDisconnectedObject.PropertyC;
// and so on and so forth
dc.SubmitChanges();

1 Ответ

1 голос
/ 07 апреля 2010

Полагаю, что столбец RowVersion / TimeStamp в каждой таблице может быть лучшим и наименее навязчивым вариантом - просто проверьте это одно значение, и вы уверены, что ваши данные могли быть изменены за это время.Все остальные столбцы могут быть установлены на Update Check=Never.Это позаботится о возможных проблемах параллелизма при обновлении вашей базы данных из «возвращаемых» объектов.

Однако, еще одна вещь, которую вы обязательно должны проверить, это AutoMapper - это отличный маленький компонентчтобы облегчить те оргии лево-правого присваивания, которые вы должны пройти при использовании ViewModels / Data Transfer Objects, сделав это сопоставление между двумя типами объектов несложным.Это хорошо используется, хорошо проверено, используется многими и очень стабильно - победитель!

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