Subsonic 3 einfache Repository -Frage
-
13-10-2019 - |
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();
.....
}
}
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.