Я начал работать над этим «уже запущенным» проектом, и у меня возникла действительно досадная ошибка при попытке выполнить некоторые взаимодействия с SQL Server 2008:
Серверу не удалось возобновить транзакцию,Описание:
Одна из этих ошибок, которые я получаю при вызове этого конкретного метода:
Вызов aspx.cs:
busProcesso openProcess = new busProcesso(pProcessoId);
try
{
if (openProcess.GetDocument() == null)
{
//Irrelevant code.
}
}
catch{ //... }
Бизнес-класс (соответствующая часть):
public class busProcesso : IbusProcesso
{
public Processo vProcesso { get; set; }
RENDBDataContext db;
public busProcesso()
{
vProcesso = new Processo();
}
public busProcesso(decimal pProcessoId)
{
db = new RENDBDataContext();
try
{
vProcesso = db.Processos.SingleOrDefault(x => x.Id == pProcessoId);
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
public string GetDocument()
{
try
{
string document = null;
foreach (Processo_has_Servico ps in ListaServicosProcesso())
{
if (ps.Servico.Document != null) //Get the error right at this line.
{
document = ps.Servico.Document;
}
}
return document ;
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
public IQueryable<Processo_has_Servico> ListaServicosProcesso()
{
db = new RENDBDataContext();
try
{
return from ps in db.Processo_has_Servicos
join s in db.Servicos on ps.Servico_Id equals s.Id
where ps.Processo_Id == vProcesso.Id
select ps;
}
catch (Exception ex)
{
throw new Exception(ex.Message, ex);
}
}
}
Как я уже сказал, ошибка возникает прямо в строке:
if (ps.Servico.Document != null)
от GetDocument()
Метод.
Открытие SQL Server Activity Monitor , я вижу, что есть процесс для моей базы данных (поставщик данных .Net SqlClient)
Через некоторое время / использование (когда яначинаю получать сообщение об ошибке «серверу не удалось возобновить транзакцию»), я захожу к монитору активности SQL Server, и есть еще около 5 или 6 идентичных процессов, которые не были убиты и (вероятно) должны были быть.Когда я вручную их убиваю, ошибка на некоторое время останавливается, пока не запустится снова.
Я не очень хорошо работаю в ОО и всех , поэтому, возможно, я что-то упустилМожет быть, какой-то способ закрыть одно из этих соединений.Кроме того, любая помощь / совет об этой структуре будет приветствоваться.
PS.Ошибка не происходит каждый раз.Иногда это работает просто отлично.Тогда это начинает давать ошибку.Тогда это останавливается.Иногда это случается только один раз ... довольно странно.