关于1对n EF数据更新,一个bug记录

it2022-05-05  141

两个类

public class ProductClass { public string Name { get; set; } public IList<ProductClassIntroduction> productClassIntroduction { get; set; } } public class ProductClassIntroduction { public ProductClass productClass { get; set; } public string Description { get; set; } }

当我要对ProductClass进行更新时候,一开始我是这样滴:

new public void Modify(ProductClass entity) { using (var db = this.NewDB()) { try { var entry = db.Entry(entity); entry.State = EntityState.Modified; db.SaveChanges(); } catch { } } }

结果是数据库中ProductClassIntroduction怎么都加不进去,为什么呢?

当解决问题后我个人看法是这样的:

  List<ProductClassIntroduction>里的数据没有标记更新或者添加标记,就是这个

EntityState.Modified导致其没有更新到本地数据库中。

 

但是!你在调试模式时候看ef数据库中是有的,很奇怪。求大神指导。

就是这里有。但是数据库里没有,而且在ProductClass中也是有数据的

求指导。

 

 

 

 

最后的解决方案是

new public void Modify(ProductClass entity) { using (var db = this.NewDB()) { try { for (int i = 0; i < entity.productClassIntroduction.Count; i++) { var itemEntry = db.Entry<ProductClassIntroduction>(entity.productClassIntroduction[i]); itemEntry.State = EntityState.Added; } var entry = db.Entry(entity); entry.State = EntityState.Modified; db.SaveChanges(); } catch { } } }

这边先将新数据标记为添加。然后对ProductClass进行更新。

转载于:https://www.cnblogs.com/FlyStupidBird/p/7066268.html


最新回复(0)