【发布时间】:2010-11-26 15:05:06
【问题描述】:
public MyClass(int someUniqueID)
{
using(//Session logic)
{
var databaseVersionOfMyClass = session.CreateCriteria(/*criteria*/)
.UniqueResult<MyClass>();
//Load logic
}
}
上面的代码示例是我当前的方向,尽管我已经到了需要进行一些健全性检查的地步。
使用 NHibernate(我在这方面是绿色的),在类构造函数中从数据库实例化对象是常见的还是最佳实践?我相信的替代方法是使用从数据库返回对象的静态方法。
我也遇到过一个关于 constructors vs factory methods 的相关问题,但是我不认为这个实现符合工厂方法。
要在上面添加一个额外的问题,如果在构造函数中实例化是可行的方法,我过去总是使用某种 Load() 方法。要么是一个特定的私有方法,将返回的 db 对象的属性与新类匹配,要么通过假设属性名称匹配的通用反射方法。我很好奇是否有另一种方法可以“加载”我错过的对象。
【问题讨论】:
标签: c# nhibernate constructor instance data-access-layer