关于官方文档中上下文的疑问 返回

SqlSugar
19 155
该叫什么 TianHao 发布于1周前
悬赏:5 飞吻

image.png

请问,文档中同一个对象不能跨上下文使用(支持异步上下文)。

上下文指的是:一次请求(即使在请求中开启Task)也算一个上下文吗?

热忱回答19

  • image.png

    因为在SqlSugarScope时,一次请求中,开启线程按照文档理解,应该是new一个对象,而结果是和请求中的contextid是一致的。

    不太理解,请各位解惑。

    谢谢

    0 回复
  • @TianHao:写具体的代码吧 

    0 回复
  • image.png

    0 回复
  • @TianHao:  你这个是异步的错误用法, 如果用异步方法 你的代码中要加await    

    0 回复
  • 这个是 Task.WaitAll 正确用法  https://www.donet5.com/Home/Doc?typeId=2349

    0 回复
  • 如果你直接开线程不用异步方法  Task.Run那么他的contextid就不一样了

    0 回复
  • @fate stay night:感谢你的回复,本质上应该没有太大区别吧。还有上下文的问题,还请解答一下,谢谢

    0 回复
  • @fate stay nightimage.png

    0 回复
  • @TianHao:  异步方法那是同一个异步上下文 , 在不用任何异步方法的时候


            private static void ConfiQuery()

            {

                var db = GetInstance();

                Console.WriteLine(db.ContextID);

                Task.Run(() =>

                {

                    Console.WriteLine(db.ContextID);


                });

            }


     这种ID就会变化 

     

    0 回复
  • Task.Run 不变成变量给 委托对象那么就和NEW线程一样效果

    0 回复
  • @fate stay night:那上下文指的是?

    image.png

    这句话应该如何解读呢

    0 回复
  • @fate stay nightimage.png

    如上还是相同的,很抱歉。

    能否稍微详细的,讲解一下。。

    谢谢你的时间。

    0 回复
  • -

    0 回复
  • -

    0 回复
  • 你的仓储看不到实现,换成new sqlsugarscope 测试

    0 回复
  • 写到一个方法里面不要有任何封装

    0 回复

  •    [HttpGet]
            public async Task<List<Guid>> Get()
            {
                var db = DbScoped.SugarScope;
                List<Guid> result = new List<Guid>();
                result.Add(db.ContextID);
                Task.Run(() =>
                {
                    result.Add(db.ContextID);
                });
                await Task.Run(() =>
                {
                    result.Add(db.ContextID);
                });
                return result;
            }

    这个是用例 ,我这边测试结果是正确的

    ["091a8bea-ad95-4bc1-9ef3-b23157e7d0e7","6b3f78d7-5595-4812-ac39-efa208d809b6","cc9d89b0-2f28-473c-8825-07ab9828cfaf"]


    0 回复
  • 可以直接拿我这个例子去测试

    0 回复
  • 在API项目中 只要TASK.RUN CONTEXTID都会变化

    0 回复