Дозвуковая 3 простая репозитория Вопрос
-
13-10-2019 - |
Вопрос
Я использую простой шаблон репозитория Subsonic 3 для хранения и получения значений из базы данных. Я хочу знать, должен ли я использовать Singleton Patten для создания SimpleRepository
или должен создать один, когда это необходимо. Например, если у меня есть урок человека, как это:
public class Person
{
public void Save()
{
var repo=new SimpleRepository("constr"); //CREATE REPO HERE
repo.Add<Person>(this);
}
public void Load(int id)
{
var repo=new SimpleRepository("constr");//CREATE REPO HER
.....
}
}
Или доступ к репо, как это
public class Person
{
public void Save()
{
var repo=RepoHelper.GetRepository();//GET FROM SINGLETON OBJECT
repo.Add<Person>(this);
}
public void Load(int id)
{
var repo=RepoHelper.GetRepository();
.....
}
}
Решение
Я использую для этого класс Синглтона. Кажется, это правильная вещь, когда у вас есть централизованный хранилище данных. Я позволяю вам управлять типом хранилища в одном месте. Также имеет то преимущество, что это облегчает переход от типа репозиции.
public static class Repository
{
static SimpleRepository repo;
public static IRepository GetRepository()
{
if (repo == null)
{
lock (repo)
{
repo = new SimpleRepository("NamedConnectionString",
SimpleRepositoryOptions.RunMigrations);
}
}
return repo;
}
}
Пса Я также создаю базовый класс записи, чтобы сделать Save () и управлять иностранными отношениями.
Не связан с StackOverflow