我使用的是.Net Framework 4.5,我得到了以下錯誤:
"多個同步連接或不同的連接~"。
"多個同步連接或具有不同連接的連接~" 目前不支持多個同時連接或在同一事務中使用不同連接字串的連接。"
我感到好奇的是,這個錯誤并不總是發生,大約有50次?這意味著錯誤大約每天發生一次。 我不知道該怎么做,因為它只發生在生產環境中,在本地測驗中從未發生過。 如果你知道確切的原因,請讓我知道。
敬禮。
請注意。
簡化后的源代碼如下。
public PartialViewResult update(string id)
{
串列<專案> 串列。
try>
{
var business = new Business()。
using (var ts = new TransactionScope(TransactionScopeOption.Required))
{
business.Update(id);
ts.Complete();
}
if (result)
{
list = business.GetList();
}
else (result)
{
Response.StatusCode = 500;
return PartialView("Error"/span>)。
}
return PartialView("PartialContent"/span>, list);
}
catch (Exception ex)
{
Response.StatusCode = 500;
return PartialView("Error") 。
}
}
public class Business
{
public List<Item> GetList()
{
var dao = new Repository()。
var list = dao.GetList().ToList() 。
return list;
}
public void Update()
{
try
{
var dao = new Repository()。
var item = dao.Get(id);
item.UpdateDate = DateTime.Now;
dao.Update(item)。
}
catch (Exception ex)
{
throw ex;
}
}
}
public class Repositoryprivate SampleContext context;
private Repository()
{
if (context == null)
{
context = new SampleContext();
}
}
public IQueryable<Item> GetList()。
{
//SQL。
}
public IQueryable<Item> Get(>string id)
{
//SQL。
}
public void Update(Item item)
{
context.Entry(item).State = EntityState.Modified;
context.SaveChanges();
}
}
添加。
我試圖通過Le Vu的評論來修改Repository。
public class Repository : IDisposable >。
{
private SampleContext context;
private Repository()
{
if (context == null)
{
context = new SampleContext();
}
}
public IQueryable<Item> GetList()。
{
//SQL。
}
public IQueryable<Item> Get(>string id)
{
//SQL。
}
public void Update(Item item)
{
context.Entry(item).State = EntityState.Modified;
context.SaveChanges();
}
public void Dispose()。
{
context.Dispose()。
}
}
在中間提交的原因是,即使在更新后重新獲取資料時發生錯誤,我們也希望繼續保持更新程序的原樣。
uj5u.com熱心網友回復:
根本原因是與SampleContext(DbContext)相關的非管理資源沒有被釋放,特別是這里的資料庫連接。
解決方法是SampleContext的實體需要明確的處置。這意味著,我們需要在Repository類中實作IDisposable介面。而在Dispose中,我們將處置SampleContext的實體(如果存在的話)。
在update動作中,Business物件的生命周期也是一個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/306654.html
標籤:
上一篇:試圖創建一個能使輸入加倍的按鈕

