Эффекты производительности с экземплярами сущностей в EntityFramework - PullRequest
4 голосов
/ 08 февраля 2011

Какое поведение я должен использовать для шаблона провайдера с платформой сущностей?

public class TestProvider : IDisposable
{
    public Entities entities = new Entities();

    public IEnumerable<Tag> GetAll()
    {
        return entities.Tag.ToList();
    }

    public ...

    #region IDisposable Members

    public void Dispose()
    {
        entities.Dispose();
    }

    #endregion
}

Или это нормально использовать:

public class TestProvider
{
    public IEnumerable<Tag> GetAll()
    {
        using (var entities = new Entities())
        {
            return entities.Tag.ToList();
        }
    }

    public ...
}

Это влияет на производительность? Какие плюсы и минусы в этом?

1 Ответ

1 голос
/ 08 февраля 2011

Это зависит от того, как долго должен существовать TestProvider и какие операции вы хотите выполнить с найденными объектами.Как правило, экземпляр ObjectContext следует использовать как можно быстрее, но он также должен представлять собой единицу работы.Экземпляр ObjectContext не должен быть общим.Я ответил на соответствующий вопрос здесь .

Это означает, что оба ваших подхода верны для некоторых сценариев.Первый подход приемлем, если вы ожидаете получить объекты, изменить их и сохранить их с тем же экземпляром поставщика.Второй подход - это нормально, если вы просто хотите получить объекты, вы не хотите сразу их изменять и не хотите выбирать что-либо еще.

...