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

两个类

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

posted @ 2017-06-22 17:37  Stupid_Bire  阅读(260)  评论(0编辑  收藏  举报