检测到无法访问的代码 [英] Unreachable code detected
本文介绍了检测到无法访问的代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在我的代码中进行交易,并且我检测到无法访问的代码。有人可以帮助我纠正它吗?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 keywordreturn
beforetrans.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屋!
查看全文