۱- الگوی Active Rercord به طور کلی مورد انتقاد است. بعضیها معتقدند الگوی Active Record ناکارآمد است و میتوان به جای آن از الگوهای بهتری مثل Repository Pattern استفاده کرد. دقت کنید که الگوی پیشفرض Castle ActiveRecord همان Active Record است اما میتوان با الگوهای دیگری از جمله Unit of Work هم با آن کار کرد.
۲- در فرایند Schema Update آن نمیتوان اسکریپتهای update را قبل از اجرا دید.
۳- Second Level Cache در بیشتر متودهای کلاس ActiveRecordBase امکان پذیر نیست، از جمله بیشتر overloadهای متود FindAll. برای فعال بودن Second Level Cache باید در Criteriaها از SetCachable(true) استفاده شود.
۴- Second Level Cache ظاهراً در ActiveRecordLinq هم به همان دلیل قبلی غیر فعال است. در LINQ موجود در NHibernate چه در provider قدیمی چه در NH 3 راه حلهایی وجود دارد ولی ظاهراً نمیتوان از آنها در Castle ActiveRecord استفاده کرد.
قاعدتاً غیر از اینها محدودیتهای دیگری هم وجود دارد اما آن چه که مهم است این است که عمده این محدودیتها را میتوان با ارثبری از کلاس ActiveRecordBase یا ActiveRecordMediator و افزودن امکانات مورد نظر به کلاس جدید دور زد. اگر هم پایه بودید میتوانید یک branch از سورس کد Castle ActiveRecord ایجاد کرده، قابلیت مورد نظر را به آن اضافه کرده و patch آن را به تیم توسعه دهنده Castle ActiveRecord بفرستید تا اگر مورد قبول واقع شد، آن امکان من بعد در نسخههای رسمی Castle ActiveRecord اضافه شود.
Comments
زياد منتظر به روز رسانيهاي منظم آن نباشيد چون نويسنده اصلي آن (Hammet) الان در مايكروسافت است: (+)
@وحید: آره الان مدتهاست که NHibernate به نسخه 3.0 و حتی 3.1 ارتقا پیدا کرده ولی Castle ActiveRecord 3.0 هنوز در نسخه بتاست.