Linq to Entities - 3-х уровневая архитектура

За последние несколько месяцев я много узнал о Linq-To-Entities и трехуровневой архитектуре с DAO / DAL / Repository. Теперь у меня в голове есть несколько вещей, которые меня беспокоят. три вопроса, которые вы увидите ниже.

Есть много способов заставить репозиторий работать, но каков «» способ заставить репозиторий работать с точки зрения производительности.

1) Инициализировать datacontext в конструкторе

public class Repository : IRepository
{

    private Datacontext context;

    public Repository()
    {
        context = new Datacontext();
    }

    public IList<Entity> GetEntities()
    {
        return (from e in context.Entity
                select e).ToList();
    }
}

2) Используйте «Использование»

public class Repository : IRepository
{
    public IList<Entity> GetEntities()
    {
        using (Datacontext context = new Datacontext())
        {
            return (from e in context.Entity
                    select e).ToList();
        }

    }
}

3) Другим способом (прокомментируйте)

Я помещу ваше предложение здесь, чтобы другие прокомментировали


Также это кажется, некоторые говорят, что репозиторий sh может вернуть IQueryable бизнес-уровню, в то время как другие говорят, что лучше вернуть IList. Что вы думаете по этому поводу?


Приведенные выше примеры кода в первом вопросе указывают на репозиторий, но как лучше всего реализовать репозиторий на бизнес-уровне (инициализировать в конструкторе, использовать «Использование» ??)

6
задан Julian 11 July 2011 в 11:55
поделиться