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

时间:2015-09-11 15:00:50

标签: c# .net entity-framework

我有以下实体

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

我使用断开连接的上下文,当我更新City时,只会设置Id和City的值, RegionId将为null

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在不使用RegionId的情况下创建update-Statement?

Regardsa M:)

1 个答案:

答案 0 :(得分:0)

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

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