Поставщик статических БД в ASP.NET MVC, вызывающий утечку памяти - PullRequest
0 голосов
/ 11 июня 2010

У меня есть приложение, которое я собираюсь написать в 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?

Ответы [ 2 ]

1 голос
/ 11 июня 2010

Поскольку вы нигде не храните объект, это не приведет к утечке памяти.

0 голосов
/ 16 июня 2010

Видимо, это приведет к утечке памяти.

...