c# - SubSonic 3 简单存储库问题

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

我正在使用 Subsonic 3 的简单存储库模式来存储和从数据库获取值。我想知道我是应该使用 Singleton patten 来创建 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
        .....
    }
}

或者像这样访问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();
        .....
    }
}

最佳答案

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

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

关于c# - SubSonic 3 简单存储库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4531556/

相关文章:

c# - 将大整数压缩成尽可能小的字符串

php - Laravel 多模型关系返回计数

ruby-on-rails - Rails 根据字段值更新多个记录

c# - 如何从单独的程序集中加载 WPF 应用程序资源 "via Code"(不是 "via XAML")

c# - 是否有相当于散装的东西?

c# - SpicIE 在开发 IE 插件时有哪些限制?

orm - 如何在 ColdFusion 中对内存中的 ORM 对象数组进行排序和过滤?

C# 编译器无法识别正在实现接口(interface)的类

c# - ASPNET 核心 : Wrong Value for ContentRootPath

c# - 使用Session存储Datatable