none
Связка Entity Framework Optimistic Concurrency Firebird RRS feed

  • Вопрос

  • Связка 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 и обработку феноменов параллельной работы.
    Если да, то как ?




    Лучинкин Юрий

    16 августа 2013 г. 12:39