我正在尝试使用NHibernate
编写可重用的类/项目DataBase(也许Fluent
但我不知道)所以我可以在任何解决方案中添加类/项目。< / p>
我有这段代码:
public class DataBase
{
private ISession _session;
private static DataBase _instance;
public static DataBase Instance
{
get
{
if (_instance == null)
{
_instance = new DataBase();
}
return _instance;
}
}
private DataBase(Assembly assembly)
{
var cfg = new Configuration();
cfg.Configure();
cfg.AddAssembly(assembly);
this._session = cfg.BuildSessionFactory().OpenSession();
}
public void SaveAll<T>(IEnumerable<T> objects)
{
foreach (object obj in objects)
{
T specificObject = (T)obj;
_session.Save(specificObject);
}
_session.Flush();
}
}
但是带参数的单身人士并不是一个好主意。创建此组件的最佳方法/模式是什么?
答案 0 :(得分:2)
我预测你将继续努力,直到随着时间的推移,DataBase类几乎暴露了NHibernate.Cfg命名空间和ISession接口所暴露的任何东西。
根据我的经验,自举代码通常是项目特定的,不能重复使用(很多)。
包装ISession API和/或查询方法通常不是一个好主意,因为最终,当在几个项目和几年中使用时,您将不得不包装所有内容。
总之,要小心包装。然而,封装和抽象可能是有用的,可以使您的代码避免重复并且更易于理解。它还可能导致NHibernate暴露于代码的较小部分。