У меня есть приложение, которое я собираюсь написать в ASP.NET MVC, и я хочу создать объект DatabaseFactory примерно так: -
public class DatabaseFactory
{
private string dbConn get { return <gets from config file>; }
public IDatabaseTableObject GetDatabaseTable()
{
IDatabaseTableObject databaseTableObject = new SQLDatabaseObject(dbConn);
return databaseTableObject;
}
}
и это прекрасно работает, но мне, очевидно, приходится создавать экземпляр DatabaseFactory в каждом контроллере, который в этом нуждается. Если бы я сделал это статическим, то я мог бы, теоретически, просто вызвать DatabaseFactory.GetDatabaseTable (), это вызвало бы утечку памяти, не так ли?
--------- ------- редактировать
может быть, мне нужно добавить немного больше деталей.
Если бы у меня был код выше, как это: -
public static class DatabaseFactory
{
private static string dbConn get { return <gets from config file>; }
public static IDatabaseTableObject GetDatabaseTable()
{
IDatabaseTableObject databaseTableObject = new SQLDatabaseObject(dbConn);
return databaseTableObject;
}
}
тогда вместо того, чтобы код моего контроллера сказал
DatabaseFactory databaseFactory = new DatabaseFactory();
var tableObject = databaseFactory.GetDatabaseTable();
List<DbRecord> records = tableObject.Table.ToList();
Я только что сказал
var tableObject = DatabaseFactory.GetDatabaseTable();
List<DbRecord> records = tableObject.Table.ToList();
Не приведет ли это к тому, что соединение с БД останется открытым после того, как метод действия контроллера был GCed?