#c# #repository #factory
#c# #репозиторий #фабрика
Вопрос:
Как мне справиться с ситуацией, когда мой конкретный объект, который вернет мой фабричный объект, зависит от другого объекта, который уже создан.
Для того, чтобы мой репозиторий работал, мне нужно иметь экземпляр объекта connection. Я не хочу создавать новый объект подключения каждый раз при вызове репозитория. Как мне справиться с этой ситуацией? Должен ли я передавать объект connection в RepositoryFactory?
IRepository<User> userRepository = RepositoryFactory.GetRepository("user");
public class UserRepository : IRepository<User>
{
public DbConnection Connection { get; set; }
public UserRepository(DbConnection connection)
{
this.Connection = connection;
}
}
Комментарии:
1. Если вы используете EF, знаете ли вы, что
DataSet
иDbSet
уже реализуют шаблон репозитория ?
Ответ №1:
В этом конкретном примере, возможно, было бы лучше каждый раз запускать новое соединение, закрывать и утилизировать, когда вы закончите, используя модульный подход к использованию ресурсов.
Ответ №2:
В MEF вы бы поместили свойство в свой объект factory, который импортирует объект connection. Затем объект factory может предоставлять этот объект connection в качестве параметра конструктора для создаваемых им экземпляров.
Объект соединения может быть создан с помощью MEF composition, или он может быть предоставлен контейнером composition (передается в качестве параметра в контейнер.Составные части).