RFD, connections, блокировки
От: Avos Беларусь  
Дата: 03.11.05 14:15
Оценка:
Добрый день!

Есть такой вопрос: как лучше использовать RFD в многопользовательских приложениях?

Поясню, что имеется ввиду: в проектируемой мной системе для задач автономного параллелизма будут использоваться пессимистические блокировки, причем на уровне сервера БД (предполагается использовать MSSQL Server 2000), что предусматривает выполнение запроса типа select for update если кто-то хочет забрать данные именно для обновления. Тогда на запись будет наложен запрет для редактирования любым пользователем, кроме того, кто выполнил запрос select for update.

В связи с этим интересует вопрос, будет ли разница между двумя вариантами кода, и будет ли все работать корректно:

1 вариант:

using (DbManager manager = new DbManager(_configurationString))
{//создается обьект DbManager, открывается новый коннект к БД
    tmp = (DicRow)manager.SetSpCommand(
    SP_GetEntityForUpdate, manager.InputParameter("i_ndicid", id))).ExecuteObject(typeof(DicRow));
}
//тут, насколько я понимаю, коннект к БД будет закрыт, используется отсоединенная модель, когда постоянного коннекта к БД нет


2 вариант

//обьект DbManager создается при инициализации приложения, в дальнейшем вся работа производится только через единственный экземпляр 
//и, таким образом, через единственный коннект к БД
    tmp = (DicRow)manager.SetSpCommand(
    SP_GetEntityForUpdate, manager.InputParameter("i_ndicid", id))).ExecuteObject(typeof(DicRow));
//объект manager создается при инициализации приложения и коннект к БД таким образом постоянно открыт


я понимаю, что поддержка блокировок на уровне БД возможно только при втором варианте?

Может кто сталкивался с такими вопросами, как реализовывать параллельную работу и блокировки?
Буду благодарен за любую информацию.

Да, приложение типа "клиент-сервер", наличие тонкого клиента не предусматривается.

Заранее спасибо!

Avos
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.