У меня приложение я собираюсь написать в ASP.NET MVC, и я хочу, чтобы создать объект DatabaseFactory что-то вроде этого: -Static DB Provider в ASP.NET MVC Причинение утечка памяти
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?
Я не вижу ничего «статического». – SLaks