/ Может / Должен ли дозвуковой процессор обрабатывать конфликты базы данных? - PullRequest
0 голосов
/ 08 марта 2011

Я недавно подобрал SubSonic для использования в новом проекте Windows vb.net и до сих пор мне очень нравится! Это идеальное начало, написанное с использованием шаблонов t4, что делает его широко открытым для настройки.

В любом случае, я использую Active record и MySql. У меня есть форма, элементы управления которой привязаны к дозвуковому классу данных с использованием источника привязки. Когда я:

  1. внести некоторые изменения в форму, НО

  2. также измените данные в таблице базы данных, используя инструментальные средства MySql, а затем

  3. сохранить изменения через форму

Я не получаю предупреждение / уведомление о столкновении данных? Изменение рабочей среды перезаписывается вызовом Save () для дозвукового класса данных

Возможно, это еще не особенность дозвуковых функций или я что-то не так делаю? Если нет, я добавлю код сохранения в шаблоны, чтобы я:

  1. загрузить новую копию записи

  2. сравнить временную метку существующей записи с временной меткой новой записи

  3. сравнить данные каждого поля и создать набор изменений

  4. поднять событие с коллекцией изменений в eventargs, чтобы я мог заставить пользователя решить, что делать.

Я не хочу этого делать, если это уже сделано, вот и все.

1 Ответ

0 голосов
/ 08 марта 2011

Я не получаю предупреждение / уведомление о коллизии данных?Изменение рабочей среды перезаписывается вызовом Save () для дозвукового класса данных

. Это может быть еще не характерно для дозвукового объекта или я что-то не так делаю?

Нет оптимистичного параллелизмафункции в SubSonic.Кроме того, это не «пока», это «период» - в проекте SubSonic не происходит значительного развития, и развитие развивается вокруг поддержки Oracle (цель, которая давно не была реализована).

Если нет, я добавлю код сохранения в шаблоны

Я собираюсь предположить, что для вас будет эффективнее отказаться от SubSonic и начать изучать другой инструмент доступа к данным.с более надежными функциями, такими как Entity Framework или NHibernate.Это вряд ли будет последним ограничением, с которым вы столкнетесь в SubSonic.

Если нет, я добавлю код сохранения в шаблоны, чтобы я:

  1. загрузить новую копию записи

  2. сравнить временную метку существующей записи с временной меткой новой записи

  3. сравнить данные каждого поля и создать коллекциюИзменения

  4. вызывают событие с коллекцией изменений в событиях, так что я могу заставить пользователя решить, что делать.

Было бы излишне неэффективно начинать с загрузки новой копии записи.Лучшей альтернативой было бы добавить предложение where к обновлению для столбца отметки времени, чтобы обновление происходило только в случае совпадения как первичного ключа, так и столбца отметки времени.Таким способом вы можете обнаружить нарушение параллелизма, проверив количество затронутых записей.Если количество затронутых записей равно нулю, запись была обновлена ​​или удалена, а затем вы можете загрузить копию и начать разрешение конфликтов.

...