У меня эта огромная система запустилась вчера. Тысячи людей соединяются одновременно .. Я использую SQL Server 2008 и .NET 3.5 (C #);
Сегодня я заметил, что мой db-сервер работает очень медленно (кстати, серверный компьютер действительно, действительно способен с легкостью справиться с этим приложением, как в 10 раз, поэтому я, должно быть, испортил свои соединения или что-то в этом роде).
Прежде всего: мои бизнес-классы создают только один DataContext каждый. На уровне класса, вот так:
public class BusProduct : IDisposable
{
//DataContext
DBDataContext db = new DBDataContext();
//Variable of type DAL.Products (that will be set on application level)
public Products _attributes { get; set; }
//Dispose
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
}
/// Constructor
public BusProduct()
{
try
{
//New object
_attributes = new Product();
}
catch (Exception ex)
{
throw new Exception(ex.Message,ex);
}
}
public void Insert()
{
try
{
//Insert data set on _attributes
db.Products.InsertOnSubmit(_attributes);
db.SubmitChanges();
}
catch (Exception ex)
{
throw new Exception(ex.Message,ex);
}
}
}
Что вы, ребята, думаете об этом (один DataContext на класс)? Что ты предлагаешь? Это хорошо для огромных классов? Это даже хорошо?
Мне нравится делать это в основном из-за возвратов типа IQueryable<Type>
. (При попытке получить доступ к этому виду возврата, если я использую один DataContext
для каждого метода, он уже будет удален)