使用NHibernate的DAL设计/加载方法

时间:2009-09-08 19:52:26

标签: c# nhibernate constructor instance data-access-layer

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

    //Load logic
    }
}

上面的代码示例是我当前的方向,虽然我已达到需要进行一些健全性检查的程度。

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

我也遇到了关于constructors vs factory methods的相关问题,但我不相信这种实现符合工厂方法论。

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

1 个答案:

答案 0 :(得分:2)

我不喜欢这种做法。 恕我直言,最好实现某种类型的存储库,为您检索持久化类的实例。 作为替代方案,您还可以遵循ActiveRecord方法,您可以在类中使用静态“Load”方法,例如实例方法“Save”。 (看看Castle ActiveRecord)。

但是,对我来说,我更喜欢Repository方法。

相关问题