由于并发问题,我无法更新更新

时间:2018-02-24 19:57:01

标签: c# asp.net-core-mvc entity-framework-core

这是我在此页面上发布的第一个问题。我会尽量保持清醒。我有像这样的服务模型

public class DowntimeService
{
    public int ID { get; set; }
    public string Work_Center { get; set; }
    public string Asset_ID { get; set; }
    [Timestamp]
    public DateTime? Start_Time { get; set;  }    
    public DateTime? End_Time { get; set;  }
}

其中Start_Time使用SQL db中的Getdate()函数。我的问题是,当我尝试更新End_Time属性时,我得到并发错误。

这是我的控制器:

 [HttpPost]
 public IActionResult Edit(int id, DowntimeService downtimeService)
 {
     if (id != downtimeService.ID)
     {
         return NotFound();
     }

     if (ModelState.IsValid)
     {
         _context.Entry(downtimeService).State = EntityState.Modified;
         _context.Entry(downtimeService).Property(t => t.Start_Time).IsModified = false;   
         _context.Update(downtimeService);
         _context.SaveChanges();       
         return RedirectToAction(nameof(Index));
     }
     return View(downtimeService);
}

有关如何更新end_Time属性的任何想法?

Here is the error I get

1 个答案:

答案 0 :(得分:1)

我找到了适合我的解决方案。我使用ModelBuilder映射SQL表中的默认值。

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<DowntimeService>(entity =>
            {
                entity.Property(t => t.Start_Time)
                .HasColumnName("Start_Time")
                .HasColumnType("datetime")
                .HasDefaultValueSql("getdate())");

            });
        }

我对EF很新,总有一些新东西需要学习。谢谢你们。