Оптимистичный параллелизм и связь с сущностями? - PullRequest
1 голос
/ 09 августа 2011

Как я читал, исключение оптимистичного параллелизма выдается ObjectContext.saveChange (), если в базе данных существует поле с типом Timestamp, помеченное как фиксированное в конструкторе entityframework, и возникает конфликт. Это не работает для меня: / Я сравниваю временные метки в жестком коде, чтобы вызвать исключение:

public void SaveChanges(TEntity entity, Byte[] oldTimestamp, Byte[] newTimestamp)
    {
        int i=0;
        try
        {
            foreach (byte b in oldTimestamp)
            {
                if( !b.Equals(newTimestamp[i++])) throw new OptimisticConcurrencyException();
            }

            SaveChanges();

        }
        catch (OptimisticConcurrencyException oce)
        {
            Refresh(entity);
            throw oce;
        }
    }

Я не думаю, что то, что я делаю, это чистый код, хотя сейчас возникает исключение.

1 Ответ

0 голосов
/ 09 августа 2011

То, что вы делаете, на самом деле правильно. Если у вас есть как старая, так и новая временная метка в приложении, нет необходимости выполнять обход базы данных для разрешения параллелизма, не так ли? Трудно сказать, почему этого нет в базе данных, потому что вы не предоставили достаточно подробностей, но, возможно, это вам кое-что объяснит .

...