Frage

Ich verwende ein einfaches Repository -Muster von SubSonic 3, um Werte aus der Datenbank zu speichern und zu erhalten. Ich möchte wissen, ob ich Singleton Patten verwenden sollte, um zu erstellen SimpleRepository oder sollte eine erstellen, wann immer erforderlich ist. Zum Beispiel, wenn ich eine Person wie diesen habe:

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
        .....
    }
}

Oder greifen Sie so auf Repo zu

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();
        .....
    }
}
War es hilfreich?

Lösung

Ich benutze eine Singleton -Klasse dafür. Es scheint das Richtige zu sein, wenn Sie einen zentralen Datenspeicher haben. Ich ermöglicht Ihnen, die Art von Repository an einem Ort zu verwalten. IS hat auch den Vorteil, dass es einfacher ist, vom Repositionstyp zu wechseln.

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. Ich erstelle auch eine Basis -Datensatzklasse, um eine Save () zu machen und Außenbeziehungen zu verwalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top