Совсем недавно начал использовать LINQ to SQL и при нагрузках на сайт стал замечать такого рода ошибки,
при чем появляются в стиле корейского Random-а:
вариант 1) InvalidCastException
вариант 2) DataReader is closed
вариант 3) SQL Server также генерирует ошибку связаную с MARS и рвет соединение
Как обычно выглядел класс с работой с LINQ:
Поиск по данным ошибкам в гугле практически ничего не давал, но вчера наткнулся на очередную тему на форуме с данной ошибкой, где было написано как ее обошли, после переписывания классов именно так — нагрузку перестал держать сам хостер, но LINQ держался молодцом:
На кажый блок обращений должен создаваться новый контекст и уничтожаться,
как в случае когда мы работаем с обычным SqlConnection.
при чем появляются в стиле корейского Random-а:
вариант 1) InvalidCastException
вариант 2) DataReader is closed
вариант 3) SQL Server также генерирует ошибку связаную с MARS и рвет соединение
Как обычно выглядел класс с работой с LINQ:
using System.Linq;
using Kushatpodano.Ru.Models;
namespace Kushatpodano.Ru.Classes.BusinessLayer
{
public class CustomPages
{
private readonly KushDBDataContext context = new KushDBDataContext();
public static string PageText(string ActionResult)
{
return (from p in context.CustomPages
where p.ActionResult == ActionResult
select p).Single().PageText;
}
public static string PageTitle(string ActionResult)
{
return (from p in context.CustomPages
where p.ActionResult == ActionResult
select p).Single().PageTitle;
}
}
}
* This source code was highlighted with Source Code Highlighter.
Поиск по данным ошибкам в гугле практически ничего не давал, но вчера наткнулся на очередную тему на форуме с данной ошибкой, где было написано как ее обошли, после переписывания классов именно так — нагрузку перестал держать сам хостер, но LINQ держался молодцом:
using System.Linq;
using Kushatpodano.Ru.Models;
namespace Kushatpodano.Ru.Classes.BusinessLayer
{
public class CustomPages
{
public static string PageText(string ActionResult)
{
string PageText;
using (KushDBDataContext context = new KushDBDataContext())
{
PageText = (from p in context.CustomPages
where p.ActionResult == ActionResult
select p).Single().PageText;
}
return PageText;
}
public static string PageTitle(string ActionResult)
{
string PageTitle;
using (KushDBDataContext context = new KushDBDataContext())
{
PageTitle = (from p in context.CustomPages
where p.ActionResult == ActionResult
select p).Single().PageTitle;
}
return PageTitle;
}
}
}
* This source code was highlighted with Source Code Highlighter.
На кажый блок обращений должен создаваться новый контекст и уничтожаться,
как в случае когда мы работаем с обычным SqlConnection.