检测到无法访问的代码 [英] Unreachable code detected

查看:126
本文介绍了检测到无法访问的代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在我的代码中进行交易,并且我检测到无法访问的代码。有人可以帮助我纠正它吗?trans.Commit无法联系到,很难找到解决方案。

之后

I'm making a transaction in my code and I get unreacheable code detected.Can someone help me to correct it?trans.Commit can't be reached,finding it hard to find solution.
after

<pre>return await _dbContext.SaveChangesAsync() > 0;



我无法达到


I can't reach

trans.Commit()





我尝试过:





What I have tried:

public async Task<bool> Save(string company, int number,string registrationNumber)
        {

            using (var trans = _dbContext.Database.BeginTransaction())
            {
                var db = new SibaCiidDbContext();
                var dbSet = _dbContext.Set<IntermediaryAssignment>();
            
                // set the database
                var check =await  (from s in db.StickerDistributions
                                    join i in db.IntermediaryAssignment
                                    on s.CompanyCode equals i.CompanyCode
                                    where s.Dispatched == false && s.CompanyCode == 
                                     company <pre>&& s.StickerCode != i.StickerCode
                             
                             select s).ToListAsync();

                var datas = await (from s in db.StickerDistributions
                                  where s.Dispatched == false && s.CompanyCode == 
                                   company && s.IntermediaryDispatched == false select s)
                                   .ToListAsync();
                                   

                var data = await (from s in db.StickerDistributions
                                  where s.Dispatched == false && s.CompanyCode == company &&
                                  s.IntermediaryDispatched == false
                                  select s).Take(number).ToListAsync();

                var intermediary = (await _repo.FindBy(s => s.RegistrationNumber == 
                                    registrationNumber && s.Status == EntityStatus.Active)).FirstOrDefault();
                
            
             
               foreach (var sticker in data)
                {
                    if (dbSet.Any(s => s.StickerCode != sticker.StickerCode))
                    {
                        var entity = new IntermediaryAssignment();

                        entity.CompanyCode = sticker.CompanyCode;
                        entity.StickerCode = sticker.StickerCode;
                        entity.RegistrationNumber = intermediary.RegistrationNumber;
                        entity.Status = EntityStatus.Active;
                        entity.CreatedDate = DateTime.Now;
                        entity.Dispatched = false;
                        entity.IntermediaryType = intermediary.IntermediaryType;
                        // entity.Sticker.Id = sticker.Sticker.Id;
                        sticker.IntermediaryDispatched = true;


                        dbSet.Add(entity);
                    }
                    

                }
                return await _dbContext.SaveChangesAsync() > 0;
                trans.Commit();

                

            }

        }

推荐答案

那是因为你在 trans.Commit()之前使用关键字 return 。那行永远不会被调用。



你能做的是这样的:



That's because you use the keyword return before trans.Commit(). That line will never be called.

What you can do is something like this:

var result = await _dbContext.SaveChangesAsync();
trans.Commit();
if(result > 0)
      return true;
return false;


Task results =  _dbContext.SaveChangesAsync() ;
                 trans.Commit();
                return  true ;


这篇关于检测到无法访问的代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆