Связка Entity Framework Optimistic Concurrency Firebird
От: juraluchinkin  
Дата: 16.08.13 12:30
Оценка:
Связка VS2010, NET 4.0, Entity Framework 5.0, Firebird 2.5, FirebirdClient 3.1 для NET 4, DDEX firebird provider 3.0
EF только начинаю использовать.
Для меня принципиально использовать ХП и реализовать сценарии оптимистичной блокировки при параллельной работе.
Но как-то эти два простых желания не удается связать в одно решение
Обрабатывать нужно следующие случаи.
Случай 1.
Редактировании удаленной записи.
Случай 2.
Редактирование записи, которая была изменена после получения на клиента.

В документации на EF про случай 1 написано, что в ХП нужно сделать возвращаемый параметр, пометить его как "Rows Affected", и в случае если он будет равен нулю, то будет Exception.
Проблема в том, что дизайнер модели в упор не видит output параметры из ХП Firebird (из MS SQL Server видит).
Про случай 2 написано, что в таблицу нужно добавить поле, которое пометить как используемое при обработке параллельности и если оно при update в результате окажется не таким как
было изначально, то тоже будет Exception. Написал, следующую ХП

create or alter procedure "UserInfo_U" (
    "RowID" integer,
    "UserName" varchar(30),
    "Password" varchar(10),
    "ObjectVersion" integer)
returns (
    "ObjectVersionNew" integer)
AS
begin
  update "UserInfo"
  set "UserName" = :"UserName",
      "Password" =  :"Password"
  where ("RowID" = :"RowID")
  returning   "ObjectVersion" into "ObjectVersionNew"  ;
 suspend;
 end


После SaveChanges() значение "ObjectVersion" приходит новое, а Exception нет
Вопрос. То, что я хочу — это реально сделать? Я имею ввиду связку Firebird и EF и обработку феноменов параллельной работы.
Если да, то как ?
entity framework optimistic concurrency firebird
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.