【问题标题】:DAL Design/Load methods with NHibernateNHibernate 的 DAL 设计/加载方法
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 我认为具有工作单元模式的存储库模式可能是我需要遇到的。我在 LINQ 世界中度过了一段时间,并在这里慢慢回归现实;)感谢 Frederik 的回复。
    猜你喜欢
    • 2014-11-10
    • 2011-01-23
    • 2010-11-25
    • 2010-10-09
    • 2010-09-30
    • 2011-06-01
    • 2011-05-27
    • 2014-03-23
    • 2010-12-24
    相关资源
    最近更新 更多