OptimisticConcurrencyException не выбрасывается, хотя значения разные - PullRequest
1 голос
/ 27 октября 2011

У меня проблема с тем, что OptimisticConcurrencyException не генерируется, у меня есть этот код, который запускается на моем HttpPost Edit

[HttpPost]
    public ActionResult Edit(IncidentViewModel incidentViewModel)
    {
        if(ModelState.IsValid)
        {
            Incident incident;
            if (IncidentViewModel.TryParse(incidentViewModel, out incident))
            {
                Incident entry = _incidentManager.Find(entity => entity.Id == incident.Id);
                if(incident.Version != entry.Version)
                {
                }

Если я затем открываю 2 браузера и принудительно запускаю OptimisticConcurrencyException, редактируя одновременно,для инцидента. Версия и запись. Версия имеет разные значения, но исключение НЕ выдается.

В моем файле .edmx для свойства Version задано значение "StoreGeneratedPattern" = вычислено и режим параллелизма = исправлено.Тип: метка времени (двоичная)

Прочитать этот пост OptimisticConcurrencyException не работает в Entity Framework в некоторых ситуациях , но это действительно не пролило свет на проблему (я не понял)

Редактировать: файл .edmx и контроллер, использующий его, находятся в 2 отдельных проектах, но одно и то же решение

Редактировать: Это мой метод обновления в моем менеджере

public virtual void Update(T updatedEntry)
    {
        if (updatedEntry == null) throw new ArgumentNullException("updatedEntry");
        RequiredData(updatedEntry);
        Repository.Update(updatedEntry);
        Repository.Commit();
    }

Обновление моего репозиторияи зафиксировать это:

public void Update(T entity)
    {
        object originalItem;
        var key = Context.CreateEntityKey(Context.GetEntitySet<T>().Name, entity);

        if (Context.TryGetObjectByKey(key, out originalItem))
        {
            Context.ApplyCurrentValues(key.EntitySetName, entity);
        }
    }

public int Commit()
    {
        var saveValue = Context.SaveChanges();
        return saveValue;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...