Concurrency Access, Why EntityFramework 6 does not generate an DbUpdateConcurrencyException?
<p>I have to manage concurrency in our Framework but I can not generate an DbUpdateConcurrencyException. We using SQL Server 2008, EF 6 and AutoMapper 5.</p>

<p>SQL</p>

<pre><code>ALTER TABLE [Keyword].[Keyword] ADD Rowversion [Rowversion] NOT NULL
</code></pre>

<p>Model</p>

<pre><code>[Table("Keyword", Schema = "Mailing")]
public class KeywordModel : _Auditable
{
    [Key]
    public int KeywordId { get; set; }

    public string Name { get; set; }
    public string Hashtag { get; set; }
    public string Namespaces { get; set; }
    public string Html { get; set; }

    [Timestamp]
    [ConcurrencyCheck]
    public virtual byte[] RowVersion { get; set; }
}
</code></pre>

<p>ViewModel</p>

<pre><code>public class KeywordEditViewModel
{
    [HiddenInput(DisplayValue = false)]
    public int KeywordId { get; set; }

    [Display(Name = "Name")]
    public string Name { get; set; }

    [Display(Name = "Hashtag")]
    public string Hashtag { get; set; }

    [Display(Name = "Namespaces")]
    [Description("Separate namespaces by ','")]
    public string Namespaces { get; set; }

    [Required]
    [AllowHtml]
    [UIHint("MultilineText")]
    [Display(Name = "Html")]
    [Description("Prefix or sufix your razor variables with #")]
    public string Html { get; set; }

    [Timestamp]
    [ConcurrencyCheck]
    public byte[] RowVersion { get; set; }
}
</code></pre>

<p>Controller</p>

<pre><code>    [HttpPost]
    public virtual ActionResult Edit(KeywordEditViewModel model, string @return)
    {
        var data = new JsonResultData(ModelState);

        if (ModelState.IsValid)
        {
            data.RunWithTry((resultData) =&gt;
            {
                KeywordManager.Update(model.KeywordId, model, CurrentUser.UserId);
                resultData.RedirectUrl = !string.IsNullOrEmpty(@return) ? @return : Url.Action("Index");
            });
        }

        return Json(data);
    }
</code></pre>

<p>Business</p>

<pre><code>    public KeywordModel Update(int id, object viewmodel, int userId)
    {
        var model = Get(id);

        Mapper.Map(viewmodel, model);
        SaveChanges("Update mailing keyword", userId);

        return model;
    }
</code></pre>

<p>AutoMapper</p>

<pre><code>CreateMap&lt;KeywordModel, KeywordEditViewModel&gt;();
CreateMap&lt;KeywordEditViewModel, KeywordModel&gt;();
</code></pre>

<p>In my tests, the RowVersion fields has a different value in the database but SaveChange does not generate exception DbUpdateConcurrencyException.</p>

<p>SQL trace</p>

<pre><code>UPDATE [Mailing].[Keyword]
SET [Namespaces] = @0, [audit_LastUpdate] = @1
WHERE (([KeywordId] = @2) AND ([RowVersion] = @3))
SELECT [RowVersion]
FROM [Mailing].[Keyword]
WHERE @@ROWCOUNT &gt; 0 AND [KeywordId] = @2 
@0: 'titi' (Type = String, Size = -1)
@1: '09/11/2016 13:35:54' (Type = DateTime2)
@2: '1' (Type = Int32)
@3: 'System.Byte[]' (Type = Binary, Size = 8)
</code></pre>