首页 新闻 搜索 专区 学院

Asp.net 项目 EF Add实体后执行SaveChanges却没有保存到数据库

0
悬赏园豆:10 [已解决问题] 解决于 2016-01-12 15:43
        public virtual void Add(TEntity entity)
        {
            if (entity == null)
            {
                throw new Exception("Add 方法中的 entity 不能为 null");
            }

            dbSet.Add(entity);
        }


        public virtual int SaveChanges()
        {
            baseDbContext.Configuration.ValidateOnSaveEnabled = false;//关闭实体属性验证
            int result = baseDbContext.SaveChanges();
            return result;
        }


奇怪的是,单独用一个测试方法,却可以将数据保存到数据库。

        public void Test()
        {
            for (int i = 0; i < 3; i++)
            {
                bTRepastanalyseBLLef.Add(new TRepastanalyse() { CreateId = 1, Createtime = DateTime.Now, ChinesefoodStatus = 0, DinnerStatus = 1, PersonId = 173, RepastDate = DateTime.Now, UpdateId = 1, Updatetime = DateTime.Now });
            }
            bTRepastanalyseBLLef.SaveChanges();
        }
问题补充:

这个的问题的发生场景:在前台页面上传一个Excel文件,后台遍历每行每列,每一行形成一个对象,每遍历一行就添加一个对象到EF上下文,循环完成后再调用 SaveChanges 保存,却发现返回值为0,上下文的Local属性里面可以看到刚才所有已添加的对象。

欢乐的Byte的主页 欢乐的Byte | 初学一级 | 园豆:144
提问于:2015-12-29 12:00
< >
分享
最佳答案
0

baseDbContext对象是否是同一个?

收获园豆:10
水晶途途 | 小虾三级 |园豆:1434 | 2015-12-30 11:08

这个的问题的发生场景:在前台页面上传一个Excel文件,后台遍历每行每列,每一行形成一个对象,每遍历一行就添加一个对象到EF上下文,循环完成后再调用 SaveChanges 保存,却发现返回值为0,上下文的Local属性里面可以看到刚才所有已添加的对象。

欢乐的Byte | 园豆:144 (初学一级) | 2015-12-30 17:52

@thislong: 调用Add方法的对象是不是同一个对象.

水晶途途 | 园豆:1434 (小虾三级) | 2015-12-31 16:35
其他回答(1)
0

有可能是实体模型验证没有通过,和数据库设计不一样。可以用try catch来调试一下看看是哪里错了。

 1 try
 2 {
 3     int result = context.SaveChanges();
 4 }
 5 catch (DbEntityValidationException dbEx)
 6             {
 7                 foreach (var validationErrors in dbEx.EntityValidationErrors)
 8                 {
 9                     foreach (var validationError in validationErrors.ValidationErrors)
10                     {
11                         System.Diagnostics.Trace.TraceInformation("Property: {0} Error: {1}",
12                                                 validationError.PropertyName,
13                                                 validationError.ErrorMessage);
14                     }
15                 }
16                 throw;
17 }
逐影 | 园豆:998 (小虾三级) | 2015-12-29 13:51

和数据库表的字段是一样的,我已经关闭了实体属性验证

支持(0) 反对(0) 欢乐的Byte | 园豆:144 (初学一级) | 2015-12-30 17:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册