Entity Framework应该添加多一个这样的功能,希望有人可以反映给微软

moonwrite 2014-05-09 03:43:26
就是开启内存模式~
无论我增删改查都只是在内存,不会执行到数据库~

我希望这样做的目的是,执行一个单元测试后,数据能立刻还原~


...全文
1252 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
guoshibing918 2014-05-13
  • 打赏
  • 举报
回复
学习了。
  • 打赏
  • 举报
回复
你重写的SaveChanges应该实现保存内存的功能。
moonwrite 2014-05-13
  • 打赏
  • 举报
回复
引用 7 楼 q107770540 的回复:
step1: prepare test envirment: insert data into database step2: do your test step3: clean up (delete data from db)
就是单元测试~想一切都在内存中,不想db~
moonwrite 2014-05-13
  • 打赏
  • 举报
回复
[TestMethod]
        public void Add()
        {
            using (TransactionScope scope = new TransactionScope())
            {
                using (var helper =InitHelper.Init())
                {
                    var sd = new SampleData.ManagerSampleData();
                    var service = helper.Resolve<IManagerService>();
                    service.AddManager(sd.Admin);

                    var dbAdmin = service.GetManagerById(sd.Admin.Id);

                    Assert.AreNotEqual(sd.Admin.GetHashCode(), dbAdmin.GetHashCode());
                    Assert.AreEqual(sd.Admin.Id, dbAdmin.Id);
                    Assert.AreEqual(sd.Admin.Account, dbAdmin.Account);
                }
              //scope.Complete();
                //只要不调用scope.Complete();,就不会提交到数据库~ 所以怎么增删改查都没有关系,感觉一切就如同在内存中操作一样~
                //现在的问题是~ 如果某个Service中也有TransactionScope 并且它已经scope.Complete();会怎么样呢
               
            }
        }
感觉目前这个方法很不错~ 先这个搞~ 以后再新其他方案了~
q107770540 2014-05-12
  • 打赏
  • 举报
回复
step1: prepare test envirment: insert data into database step2: do your test step3: clean up (delete data from db)
moonwrite 2014-05-12
  • 打赏
  • 举报
回复
引用 5 楼 caozhy 的回复:
重写SaveChanges即可。
看3楼,我重写了~ 增删改都没有问题,问题是出现在查询上
threenewbee 2014-05-12
  • 打赏
  • 举报
回复
重写SaveChanges即可。
moonwrite 2014-05-12
  • 打赏
  • 举报
回复
这么伟大的Idea~ 既然没有人来顶一下~
moonwrite 2014-05-09
  • 打赏
  • 举报
回复
引用 1 楼 wanghui0380 的回复:
额本来就是如此啊 你不savechanges就是只在内存,你喊人家执行保存,人家保存了,难道还错了么?
我已经覆盖SaveChanges了~ public override int SaveChanges() { //Do nothing return 0; } 然而还是有其他问题的~ 就是我分别插入Product和Category 他们是有主外键关系的~ 那么我在搜索Product Include Category 如果是数据库的话那么应该会有Category的数据~ 但插入到内存中的没有~
wanghui0380 2014-05-09
  • 打赏
  • 举报
回复
如果想单元测试不执行savechanges,我个人在写地时候就写条件编译指令了
wanghui0380 2014-05-09
  • 打赏
  • 举报
回复
额本来就是如此啊 你不savechanges就是只在内存,你喊人家执行保存,人家保存了,难道还错了么?

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧