Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ConcurrencyCheck在第一次更新时抛出OptimisticConcurrencyException_C#_Asp.net Mvc_Mongodb_Entity Framework - Fatal编程技术网

C# ConcurrencyCheck在第一次更新时抛出OptimisticConcurrencyException

C# ConcurrencyCheck在第一次更新时抛出OptimisticConcurrencyException,c#,asp.net-mvc,mongodb,entity-framework,C#,Asp.net Mvc,Mongodb,Entity Framework,我正在做一个简单的更新,如果我不修改我用[ConcurrencyCheck]属性修饰的字段,它就会工作 这是我的财产: [Required] [Index] [Display(Name="First Name")] [ConcurrencyCheck] public string firstname { get; set; } 这是我的更新操作方法: [HttpPost] [Err()] public async Task<ActionResult> Edit(Entries en

我正在做一个简单的更新,如果我不修改我用
[ConcurrencyCheck]
属性修饰的字段,它就会工作

这是我的财产:

[Required]
[Index]
[Display(Name="First Name")]
[ConcurrencyCheck]
public string firstname { get; set; }
这是我的更新操作方法:

[HttpPost]
[Err()]
public async Task<ActionResult> Edit(Entries entry)
 {
     if (ModelState.IsValid)
     {
            CtxRepoRBMS<CarlCtx, Entries> ctxRDMS = HttpContext.GetOwinContext().Get<CtxRepoRBMS<CarlCtx, Entries>>();
            MongoRepo<Items> ctxMongo = new MongoRepo<Items>(client: new MongoClient("mongodb://localhost"), dbName: "items");

            ctxRDMS.Update(entry);
            ctxRDMS.Save();
ctxRDBMS.Save

public void Save()
{
   ctx.SaveChanges();
}

如果我将修改除
firstname
之外的其他属性,则更新工作正常,但一旦我更改并保存它,就会抛出
OptimisticConcurrencyException
,这没有意义,因为除了我之外,没有其他人在编辑
firstname

我想我刚刚解决了这个问题

如果一个列被[concurrencycheck]修饰,那么在不引发并发异常的情况下就不能更改该列(至少我不能更改它)

所有文档都没有如此清楚地说明这一点,我看到的示例通常在示例中选择一些列,这些列很可能在数据的生命周期内发生更改(有一种情况下是姓氏)


大家的共识似乎是使用SQL Server中的ROWVERSION列作为模型中唯一的并发令牌。

我想我刚刚解决了这个问题

如果一个列被[concurrencycheck]修饰,那么在不引发并发异常的情况下就不能更改该列(至少我不能更改它)

所有文档都没有如此清楚地说明这一点,我看到的示例通常在示例中选择一些列,这些列很可能在数据的生命周期内发生更改(有一种情况下是姓氏)


共识似乎是使用SQL Server中的ROWVERSION列作为模型中唯一的并发令牌。

您应该阅读这篇文章:您应该阅读这篇文章:
public void Save()
{
   ctx.SaveChanges();
}