C# 亚音速3简单存储库问题

C# 亚音速3简单存储库问题,c#,asp.net,orm,subsonic3,subsonic-simplerepository,C#,Asp.net,Orm,Subsonic3,Subsonic Simplerepository,我使用亚音速3的简单存储库模式来存储和获取数据库中的值。我想知道我是应该使用Singleton模式来创建SimpleRepository,还是应该在需要时创建一个。如果我有这样的Person类: public class Person { public void Save() { var repo=new SimpleRepository("constr"); //CREATE REPO HERE repo.Add<Person>(th

我使用亚音速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
        .....
    }
}
公共类人物
{
公共作废保存()
{
var repo=new SimpleRepository(“constr”);//在此处创建repo
回购。添加(本);
}
公共无效载荷(int-id)
{
var repo=new SimpleRepository(“constr”);//创建repo
.....
}
}
或者像这样访问回购协议

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();
        .....
    }
}
公共类人物
{
公共作废保存()
{
var repo=RepoHelper.GetRepository();//从单例对象获取
回购。添加(本);
}
公共无效载荷(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()和管理外交关系

在我的下一个项目中,我还将尝试你的基类记录方法。几天后,我将用我正在使用的基类写一篇博客。我会通知你的。