گاهی اوقات تلفیقی از چند جدول با شرایط خاص داریم که میخواهیم آن را به چشم یک Domain Entity نگاه کنیم. در حالت عادی انجام این کار خیلی ساده است. کافی است یک View از تلفیق آن جداول بسازیم و View را مطابق نمونه زیر به عنوان یک Domain Entity تعریف کنیم: [ActiveRecord(“SampleView”)] public class …
بین دو Entity میتوان رابطه یک به یک برقرار کرد. یعنی به ازای یک instance (رکورد) از یکی، فقط و فقط یک instance (رکورد) در دیگری وجود داشته باشد. هر چند که NH این نوع رابطه را نشانه طراحی بد میداند، اما دو راه برای پیادهسازی آن مهیا کرده است: ۱- روش primary key associations: …
NHibernate have 2 varieties of one-to-one association, primary key associations and unique foreign key associations. Castle ActiveRecord documentation describes just first varity, primary key associations. But how about second variety, unique foreign key associations? Well, it can be implemented as follow. Please notice sample: [ActiveRecord(Lazy = true)] public class User : ActiveRecordBase { [PrimaryKey] …
به تجربه دریافتهام هر وقت که در NHibernate/Castle AR بدون هیچ دلیل واضحی مشکل Stack Overflow به وجود میآید، باید مکانیزم Dirty detection را بررسی کرد. در این مکانیزم، NH خودش objectهایی را که dirty شدهاند را پیدا کرده و آنها را update میکند. بعضی وقتها پیش میآید که update شدن یک آبجکت dirty باعث …
موقع فعالسازی Cache در NHibernate متوجه شدم که فراخوانی بعضی Entityها و بعضی از Queryها از دیتابیس شامل چند join است و عملاً از آن چیزی که در Cache ممکن است موجود باشد استفادهای نمیشود. به عنوان مثال فرض کنید کلاس Teacher و Student موجود باشد به نحوی که از کلاس Student یک Association به …
In my Castle ActiveRecord based application I have a base class named ARSuperClass that all my domain entities except than EntityLogger inherit from it instead of inheriting from ActiveRecordBase. I have ModifyDate and CreateDate fields in ARSuperClass that must be updated each time an entity is created or updated. Additionally each creation/updating operations must be …
Castle ActiveRecord یک کتابخانه مفید برای استفاده از NHibernate است. این کتابخانه هم کار mapping را مشابه Fluent NHibernate ساده میکند و هم کار مدیریت session و خیلی کارهای دیگر را خودش مدیریت میکند. به طوری که استفاده از NHibernate بسیار سادهتر شود. Castle ActiveRecord در واقع پیادهسازی Design Patternی به همین نام یعنی Active …
Second level cache is different than first level cache. It acts on session factory level not each individual session. In order to setup second level cache in a Castle ActiveRecord application consider following points: 1. Settings of second level cache in Castle ActiveRecord is basically as same as NHibernate. 2. In addition of web.config/app.config settings, …
بعضی پیغام خطاها آنقدر سمج هستند و آن قدر منبع نامعلومی دارند که میتوان به آنها لقب لعنتی، کشنده یا حتی دهن صاف کن داد. به تازگی یکی از این پیغام خطاهای کشنده برای من اتفاق افتاد. زمانی که در حال فعالسازی Caching سطح دوم برای یک برنامهی مبتنی بر Castle ActiveRecord بودم دچار خطای …
While I was trying to use first level cache in a Castle ActiveRecord based application I found some points that like to share: 1. First level cache is alive within a single session (NHibernate’s ISession) only. 2. First level cache is enabled by default and can not be disabled. 3. If you don’t use SessionScope …