گاهی اوقات تلفیقی از چند جدول با شرایط خاص داریم که میخواهیم آن را به چشم یک 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.
دیدگاهها
سلام، ممنون که دانسته هاتونو برای اشتراک میذارین، خدا کنه این به اشتراک گذاشتن بقیه ای مثل من رو هم ترقیب به نوشتن کنه، ولی میخواستم ببینم برای این کار آیا راه حلی برای کسانی که از Fluent استفاده میکنند چطور است
سلام. من با Fluent (NHibernate?) کار نکردم. ولی از آنجا که View موضوع پیچیدهای نیست حدس میزنم داشته باشد.