powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Иногда появляется нестабильность (C#, SQL)
1 сообщений из 1, страница 1 из 1
Иногда появляется нестабильность (C#, SQL)
    #36168485
Keshkins
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Весь исполняемый код сидит на достаточно хорошей нагрузке через Веб-Сервисы. Соответственно все исполняется в параллельных потоках.
Есть некоторая ORM-модель, с кешируемыми объектами.
Объекты загружаются по единой схеме,
для загрузки используется нижеприведенный класс, сам он используется в единственном экземпляре на протяжении жизни всего приложения
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
public class SqlLoader
{
    public SqlLoader()
	{
		m_GetRowCommand = new SqlCommand("dbo.LoadUser");
		m_GetRowCommand.CommandType = CommandType.StoredProcedure;
		m_GetRowCommand.Parameters.Add("Id", SqlDbType.Int);
	}

	protected SqlConnection Connection
	{
		get
		{
            return new SqlConnection(ConnectionString);
		}
	}

	protected SqlCommand m_GetRowCommand;

	public SqlCommand RowCommand
	{
		get { return m_GetRowCommand; }
	}

    public override void LoadObject(DataObject obj, int ID)
    {
        SqlCommand scmd = RowCommand;
        lock (scmd)
        {
            using (scmd.Connection = Connection)
            {
                scmd.Parameters[0].Value = ID;
                if ((scmd.Connection.State & System.Data.ConnectionState.Open) == 0)
                    scmd.Connection.Open();
                using (SqlDataReader rd = scmd.ExecuteReader())
                {
                    if (!rd.Read())
                        throw new Exception();
                    try
                    {
                        obj.Id = (int)rd.GetValue(0);
                        obj.Login = (string)rd.GetValue(1);
                        obj.Email = (string)rd.GetValue(2);
                        obj.RegDate = (DateTime)rd.GetValue(3);
                    }
                    catch (IndexOutOfRangeException)
                    {
                        // Вот тут иногда вылазит ошибка
                    }
                }
            }
        }
    }
}

в указанном месте, раз в n-ное колебание астрала начинает сыпать ошибка IndexOutOfRangeException
соответственно подробные лог показывает, что вылазят результаты с одним полем, причем иногда даже имя его не Id а ещё какое-нибудь, встречающееся в черти-каком запросе, явно не относящемся к этому

параллельно сыпятся некоторые запросы в LinqToSql, но опять же не все..
SQL Log СУБД молчит обо всем, для него ошибок нет...
Что может быть не так?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Иногда появляется нестабильность (C#, SQL)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]