反馈BUG 返回

C#论坛 老数据
7 3075

在使用本ORM的时候使用了事务,在提交事务之前需要检查一下添加或者修改的资料是否正确,如果正确则提交,检查是否正确的时候会和原来的数据对比,这个时候有一个查询的动作,但是我发现,没有提交的新增加的数据也查询到结果集合里面一起去了,所以导致我业务出问题.
例如 

using (var dbClient = db.GetInstance(DB.db_mm.GetAttributeValue()))

{

dbClient.CommandTimeOut = 30000;//设置超时时间

try

{

dbClient.BeginTran();//开启事务

Model obj=new Model();

                obj.id=GUID;

                obj.type="A";

                obj.int=200;

                dbClient.Add(obj);

                if(dbClient.Queryable<vw_mm_sto>().Where(p=>p.type=="A").Tolist().Sum(p=>p.int)>500) //没有提交的数据也参与到合计里面了

                {

                    dbClient.RollbackTran();//回滚事务

                }


dbClient.CommitTran();//提交事务

}

catch (Exception ex)

{

dbClient.RollbackTran();//回滚事务

MessageBox.Show(ex.ToString());

log.Errorlog("E", this.Name, MethodInfo.GetCurrentMethod().Name, ex.Message.ToString());

}

}

补充:

我使用的mysql,没有提交的数据,我在 MySql WorkBench里面搜索的时候是不会显示的,这是一个大的BUG,还是隐藏的BUG,十分紧急,求解决


热忱回答7

  • 这不是BUG,你还不了解事务与锁。默认情况下事务添加在事务查询是可以查询的到的

    0 回复
  • @fate stay night:當我沒有submit的時候我在數據庫裏面直接查,是查不到的哦.

    0 回复
  • @fate stay night:不好意思是我學藝不精,那麼這個ORM有沒有辦法像EF一樣,能夠做到SaveChange()只有當執行了這個以後,我新增加或者變動的數據才能查到呢?

    0 回复
  • EF这种设计本来就很失败,你如果不需要执行你可以写在查询下面,savechange也并不是事务只是打包提交,是用来弥补EF批量的缺陷设计的

    0 回复
  • MeCoos MeCoos VIP0
    2017/6/21

    我的回复怎么不显示?

    0 回复
  • MeCoos MeCoos VIP0
    2017/6/21

    @MeCoos:自己回复

    0 回复
  • @MeCoos:看到了你的回复了

    0 回复