我正在使用亚音速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();
        .....
    }
}
有帮助吗?

解决方案

我为此使用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。我还建立了一个基本记录类以进行保存()并管理外交关系。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top