Вопрос

Я использую простой шаблон репозитория 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 () и управлять иностранными отношениями.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top