我使用的是Castle ActiveRecord,但將它包裝在我自己的持久層中,因爲我想從應用程序代碼中隱藏這個事實。但是,我的實體都從ActiveRecordBase<T>
繼承,所以我選擇的ORM泄露給應用程序。我特別不喜歡的是這些暴露我的實體的方法。隱藏類是Active Record的事實
如何在不從ActiveRecordBase繼承的情況下使用ActiveRecord?
我知道抽象的一部分會泄漏,因爲我的實體裝飾有ActiveRecord屬性,但我不認爲這部分是有意義的。
我使用的是Castle ActiveRecord,但將它包裝在我自己的持久層中,因爲我想從應用程序代碼中隱藏這個事實。但是,我的實體都從ActiveRecordBase<T>
繼承,所以我選擇的ORM泄露給應用程序。我特別不喜歡的是這些暴露我的實體的方法。隱藏類是Active Record的事實
如何在不從ActiveRecordBase繼承的情況下使用ActiveRecord?
我知道抽象的一部分會泄漏,因爲我的實體裝飾有ActiveRecord屬性,但我不認爲這部分是有意義的。
當使用城堡的ActiveRecord的實體不必從基類繼承。您可以改用ActiveRecordMediator<T>
。也許this article from the manual將有所幫助。
如果你只使用普通的NHibernate,你不必使用裝飾器等,你只需要彙總自己的hbm.xml文件,這是非常簡單的,有很多工具可以幫助。
請注意,雖然這並不直接回答你的問題,但我把它放在那裏,因爲使用你自己的NHibernate抽象和學習NH是一項很棒的技能,一旦你投入了時間,你將永遠不會再使用AR(好吧,除非它一個你想快速推出的小項目)。
我有我自己的自定義NH抽象層,你可以找到一些代碼樣本等在我的博客在這裏: http://www.picnet.com.au/blogs/Guido/post/2009/07/08/Code-Generated-DAL-%28Data-Access-Layer%29-using-ORM-Article-1.aspx
雖然這可能是在它告訴你什麼NH很好的理解可以讓頂部你今後要做。
圭多
我確實想使用ActiveRecord(和FluentNH)來簡化問題,我只是不希望這會嚴重泄漏給應用程序。 – ripper234 2010-01-02 06:42:23
像往常一樣,rftm :) – ripper234 2010-01-02 10:26:33