2009-02-05 45 views
3

我需要一個.Net ORM,並且我聽到了一些關於此的好東西。我過去曾經使用NHibernate,但這似乎使許多事情變得更容易。你對Castle ActiveRecord有什麼看法?

但是,有兩件事讓我有些緊張。

  1. 它使用NHibernate的1.2,這似乎老
  2. 它仍然是任何使用它與它的最後一個版本18個月前

的RC?他們推薦它的生產環境?它還在積極發展中嗎?

具體來說,是否值得使用ActiveRecord而不是簡單的'ol NHibernate?

回答

2

他們每晚都會編譯Castle,它現在被編譯成NHibernate 2.0甚至2.1。很少有人使用RC3,我相信很快會有GA版本發佈。但是,儘管ActiveRecord大大簡化了配置,並且即使在查詢等情況下也可以輕鬆使用NHibernate,但我經歷過大部分時間我仍然回到在代碼中使用NHibernate邏輯,因此沒有考慮到ActiveRecord其他方面的優勢(特別是當涉及到ActiveRecord不支持的二級緩存等)時。即使HQL等要求使用樸素的NHibernate邏輯在我的經驗中也很有用。

因此,可能值得使用直接的NHibernate並跳過ActiveRecord部分,除非您構建了一個非常簡單的應用程序,其中性能調整確實不是問題,因爲您現在有許多其他配置選項。

2

它違反了域驅動的設計,因爲它強制你添加屬性到你的域對象並通過它們使用活動記錄模式,理想情況下它應該保持簡單的POCO。與傳統三層設計相比,領域驅動設計的興起意味着它可能不是一個長期熟悉的好庫(也許直接用於nhibernate)。另一方面,這是一個優秀而強大的圖書館,我使用它的項目是成功的。

+2

雖然您對屬性正確,但仍然可以以DDD方式使用AR ... i.o.w - 沒有活動的記錄模式。 你通過ActiveRecordMediator做到這一點 2009-02-05 15:14:47

+0

的確如此,但我讀了一些關於它如何不那麼簡單的博客。但也許我落後於時間 – 2009-02-05 15:16:36

7

是的,值得使用ActiveRecord而不是普通的NHibernate,因爲它極大地簡化了配置。