C# 亚音速3简单存储库问题
我使用亚音速3的简单存储库模式来存储和获取数据库中的值。我想知道我是应该使用Singleton模式来创建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
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()和管理外交关系 在我的下一个项目中,我还将尝试你的基类记录方法。几天后,我将用我正在使用的基类写一篇博客。我会通知你的。