‫‫View به عنوان یک Domain Entity در Castle ActiveRecord

گاهی اوقات تلفیقی از چند جدول با شرایط خاص داریم که می‌خواهیم آن را به چشم یک Domain Entity نگاه کنیم. در حالت عادی انجام این کار خیلی ساده است. کافی است یک View از تلفیق آن جداول بسازیم و View را مطابق نمونه زیر به عنوان یک Domain Entity تعریف کنیم:

[ActiveRecord("SampleView")]
public class SampleDomain : ActiveRecordBase<SampleDomain>
{
[Property]
public virtual string Prop1 { set; get; }

[Property]
public virtual string Prop2 { set; get; }
}
در اینجا SampleView نام View دیتابیسی است و Prop1 و Prop2 نام دو تا از ستون‌های آن است.

اما اگر ما یک Entity پایه داشتیم و حتماً باید همه Entityها از آن Entity پایه ارث‌بری می‌کردند چه باید می‌کردیم؟ Entityهای پایه معمولا دارای Propertyهای مشترکی مثل Id و LastModifyDate هستند. فرض کنید اسم آن Entity پایه EntityBase بود. آن وقت Domain Entity مورد نظر به شکل زیر در می‌آمد:

[ActiveRecord("SampleView")]
public class SampleDomain : BaseEntity<SampleDomain>
{
[Property]
public virtual string Prop1 { set; get; }

[Property]
public virtual string Prop2 { set; get; }
}
تنها تفاوتی که به وجود آمد ارث‌بری از BaseEntity به جای خود ActiveRecordBase بود. البته View دیتابیسی مورد نظر باید شامل همه Propertyهای مشترک تعریف شده در BaseEntity هم باشد مثل Id و LastModifyDate.