.netプロセスのメモリが不足しているアプリケーションでいくつかの問題が発生しました。アプリケーションで行った変更の1つは、SQLクラスに多くのLinqを追加することです。DataContextの作成方法に問題があるのではないかと思います。
必要なときにデータコンテキストを作成することで、データコンテキストを作成できます。明らかに、データを変更する場合は、複数のステートメントで同じデータコンテキストが必要になるため、変数を作成してデータコンテキストを保持します。
テクニック1
public class SchoolRepository
{
DataBaseDataContext GetCtx()
{
return new DataBaseDataContext();
}
public List<School> GetSchools()
{
return GetCtx().Schools.ToList();
}
}
これが、DataContextを作成する別の方法です。この場合、DataContextへの参照を保持するクラスフィールドがあります。
テクニック2:
public class SchoolRepository
{
private DataBaseDataContext _ctx = null;
DataBaseDataContext ctx
{
get { return _ctx = (_ctx ?? new DataBaseDataContext()); }
}
public List<School> GetSchools()
{
return ctx.Schools.ToList();
}
}
私は(クラス変数を使用して)2番目の方法を使用してきましたが、それによってコンテキストが最初の方法よりも長く続く可能性があるのではないかと思います---クラスのインスタンスと同じくらい長く続くためです立ち往生。
おそらくここでストローを握っていますが、一方の方法がもう一方の方法よりも「安全」であるかどうか疑問に思っています。