4

我正在使用 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();
        .....
    }
}
4

1 回答 1

1

我为此使用了一个单例类。当您拥有集中式数据存储时,这似乎是正确的选择。我允许您在一个地方管理存储库的类型。它还有一个优点是它可以更容易地从重新定位类型切换。

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() 和管理对外关系。

于 2011-04-01T06:26:25.367 回答