Параллелизм Entity Framework с несколькими таблицами / сущностями - PullRequest
2 голосов
/ 16 февраля 2011

Я понимаю, как заставить оптимистичный параллелизм работать с Entity Framework для одной таблицы.

Но как насчет сценария, в котором я хочу иметь оптимистичный параллелизм между несколькими таблицами.Чтобы проиллюстрировать, что я имею в виду, я буду использовать пример:

  • Стол для автомобиля
  • Стол для колес, внешний ключ для автомобиля (несколько колес на автомобиль)

Как я могу управлять параллелизмом в случае, когда сервер добавляет / удаляет колесо из автомобиля.

Добавление столбца ModifiedTimestamp в Car может обрабатывать параллельные обновления для Car, но как насчет обновлений колеса автомобиля?

Я могу только представить решение этой проблемы с помощью пессимистического параллелизма (т. Е. Блокированияавтомобиль объект для пользователя), чтобы решить эту проблему.Но из моего исследования кажется, что пессимистичный параллелизм не поддерживается Entity Framework.

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

Ответы [ 2 ]

1 голос
/ 16 февраля 2011

Одним из способов всегда является изменение чего-либо в таблице автомобилей.Автомобиль - основа для ваших колес, потому что колеса не могут существовать без автомобиля.Если вы модифицируете колесо, вы модифицируете весь обремененный объект - автомобиль.Поэтому добавьте некоторое обновление автомобиля, чтобы смоделировать это поведение - обычно поддерживается такой столбец, как ModifiedDate.

Пессимистический параллелизм поддерживается сериализованной транзакцией - уровень изоляции по умолчанию для TransactionScope.

1 голос
/ 16 февраля 2011

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

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

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