两个类
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进行更新。