【问题标题】:SubSonic 3 simple repository questionSubSonic 3 简单存储库问题
【发布时间】:2010-12-25 20:22:50
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net orm subsonic3 subsonic-simplerepository


    【解决方案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() 和管理对外关系。

    【讨论】:

    • 我也会在我的下一个项目中尝试你的基记录类方法。
    • 过几天我会用我正在使用的基类写一篇博客。我会及时通知你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多