我正在删除以下列表中的项目
List<string> cities = new List<string>();
cities.Add("New York");
cities.Add("Mumbai");
cities.Add("Berlin");
cities.Add("Istanbul");
cities.Remove(2);
上下文会跟踪此删除。
var entityChangeList = ChangeTracker.Entries().Where(p => p.State == EntityState.Added || p.State == EntityState.Deleted || p.State == EntityState.Modified);
return entityChangeList.Count();
虽然entityChangeList.Count()为1,但修改了EntityState。根据我的理解,必须删除它。 我应该手动设置要删除的状态吗?
谢谢
答案 0 :(得分:1)
您是否尝试直接从DBSet中删除条目?在这种情况下,EntityState将设置为Deleted。但是,如果您尝试使用外键删除DBSet中另一个列表中的条目,则外键将设置为null(如果您的数据库允许空值),从而导致父DBSet的状态被修改而不是已删除。
答案 1 :(得分:0)
除非您想要覆盖行为,否则不应手动设置状态。如果调用Remove方法,EF应自行设置状态。见下面的例子
var itemToRemove = Get(id, context);
var result = context.Set<T>().Remove(itemToRemove);
context.SaveChanges();