SubSonic 3 простой репозиторий вопрос

Я использую простой шаблон хранилища Subsonic 3 для хранения и получения значений из базы данных. Я хочу знать, должен ли я использовать паттерн Singleton для создания SimpleRepository или должен создать один раз, когда это необходимо. Например, если у меня есть класс Person вот так:

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();
        .....
    }
}

1 ответ

Решение

Я использую класс Singleton для этого. Кажется, это правильно, когда у вас есть централизованное хранилище данных. Я позволяю вам управлять типом хранилища в одном месте. Преимущество также в том, что он облегчает переключение с типа репозиции.

public static class Repository
{
    static SimpleRepository repo;

    public static IRepository GetRepository()
    {
        if (repo == null)
        {
            lock (repo)
            {
                repo = new SimpleRepository("NamedConnectionString",
                    SimpleRepositoryOptions.RunMigrations);
            }
        }

        return repo;
    }
}

Ps. Я также создаю базовый класс записей для сохранения () и управления внешними связями.

Другие вопросы по тегам