0
public MyClass(int someUniqueID)
{
    using(//Session logic)
    {
    var databaseVersionOfMyClass = session.CreateCriteria(/*criteria*/)
        .UniqueResult<MyClass>();

    //Load logic
    }
}

上面的代码示例是我当前的方向,尽管我已经到了需要进行一些健全性检查的地步。

使用 NHibernate(我在这方面是绿色的),在类构造函数中从数据库实例化对象是常见的还是最佳实践?我相信的另一种选择是有一个从数据库返回对象的静态方法。

我还遇到了一个关于构造函数与工厂方法的相关问题,但是我不相信这个实现适合工厂方法。

要在上面添加一个额外的问题,如果在构造函数中实例化是可行的方法,我过去总是使用某种 Load() 方法。一个特定的私有方法可以将返回的 db 对象的属性与新类匹配,或者通过假设属性名称匹配的通用反射方法。我很好奇是否有另一种方法可以“加载”我错过的对象。

4

1 回答 1

2

我不喜欢这种方法。恕我直言,最好实现某种存储库来为您检索持久类的实例。作为替代方案,您也可以遵循 ActiveRecord 方法,在这种方法中,您可以在类中使用静态“加载”方法,以及实例方法“保存”。(看看Castle ActiveRecord)。

但是,对我来说,我更喜欢存储库方法。

于 2009-09-08T19:58:36.093 回答