如何在将未修改的属性标记为必需时仅更新实体的已修改属性

本文关键字:属性 更新 修改 实体 记为 未修改 | 更新日期: 2023-09-27 18:12:32

我有以下实体

public class City()
{  
  [Key]
  public int Id {get; set;}
  [Required]
  public int RegionId {get; set;}
  public string City {get; set;}
}

我使用一个断开连接的上下文,当我更新城市时,只有Id和City的值将被设置,RegionId将为空

public void updateCity(int id, string City)
{
    var c = new City();
    c.Id = id;
    c.City = City;
    using (var db = new MyContext())
    {
      db.Cities.Attach(c);
      db.Entry(c).Property(a => a.RegionId).IsModified = false;
      db.SaveChanges();
     }

db.SaveChanges()抛出异常,告诉我

RegionId必须填写。

有没有办法告诉EF创建一个update-Statement而不使用RegionId?

RegardsaM:)

如何在将未修改的属性标记为必需时仅更新实体的已修改属性

您可以从数据库中获取旧项目并更新修改后的属性。

var cityToUpdate=db.Cities.Find(id);
cityToUpdate.City=City;
db.SaveChanges();