如何在将未修改的属性标记为必需时仅更新实体的已修改属性
本文关键字:属性 更新 修改 实体 记为 未修改 | 更新日期: 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();