За последние несколько месяцев я много узнал о 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. Что вы думаете по этому поводу?
Приведенные выше примеры кода в первом вопросе указывают на репозиторий, но как лучше всего реализовать репозиторий на бизнес-уровне (инициализировать в конструкторе, использовать «Использование» ??)