Позвольте мне объяснить мой сценарий ...
Скажем, у меня есть две таблицы: "Пути" и "Пакеты"
Таблица путей состоит из «PathId», «StartNode», «EndNode»
Таблица пакетов состоит из «StartNode», «DestinationNode», «Paths»
Я собираюсь написать программу, которая вычисляет путь, по которому пакет направляется от начала до места назначения, используя любой алгоритм кратчайшего пути.
Чтобы удостовериться, что настройки путей не меняются, пока я вычисляю путь, я считаю, что я должен использовать «SELECT * FROM Paths FOR SHARE» для получения блокировки общего ресурса. Таким образом, до тех пор, пока пути не будут вычислены и транзакция не будет зафиксирована, путь начала / конца не должен изменяться, и в любой момент - вычисленные пути в базе данных всегда действительны.
Вопрос : я пишу программу C # с NHibernate, как мне получить блокировку общего ресурса?
Я пытался:
Session.QueryOver<Path>().Lock().Read.List()
но это не делает магию.
Является ли Session.CreateSQLQuery()
единственным решением?