‫‫استفاده از Castle ActiveRecord در چند گام

Castle ActiveRecord یک ابزار کمکی برای استفاده راحت‌تر از NHibernate است. NHibernate خودش هم یک ORM کد باز دات‌نتی معروف است. در واقع می‌توان Castle ActiveRecord را یک ORM خیلی راحت دانست. بسیاری افراد فکر می‌کنند استفاده از ORMها و تنظیمات آنها کار خیلی سختی است. اما من در اینجا می‌خواهم در چند قدم ساده یک پروژه ASP.NET کوچک را با استفاده از Castle ActiveRecord ایجاد کنم.

۱- یک پروژه ASP.NET در ویژوال استودیو ایجاد کنید و اسم آن را ActiveRecordTest بگذارید.
۲- سه صفحه به نام‌های CreateSchema، SampleData و ViewData، یک کلاس به نام Car و یک فایل Global.asax به آن اضافه کنید.
۳- Castle ActiveRecord را از این آدرس دریافت کنید. حجم دریافت ‎1.9 MB است.
۴- یک reference از فایل Castle.ActiveRecord.dll به پروژه اضافه کنید.
۵- کلاس Car را مطابق زیر تغییر دهید. این کلاس رابط برنامه شما و دیتابیس است. این کلاس ساختار جدول دیتابیس را هم تعیین می‌کند. یعنی شما نیازی نیست که به دیتابیس مراجعه کرده و جدولی به اسم Car بسازید. هر فیلد این کلاس که بالای آن [Property] درج شده باشد نمایانگر یک ستون از جدول دیتابیسی است.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Castle.ActiveRecord;

namespace ActiveRecordTest
{
[ActiveRecord(Lazy = true)]
public class Car : ActiveRecordBase
{
[PrimaryKey]
public virtual long ID { set; get; }

[Property]
public virtual string Manufacture { set; get; }

[Property]
public virtual string Model { set; get; }

[Property]
public virtual int MaxSpeed { set; get; }

[Property]
public virtual string Color { set; get; }
}
}
۶- فایل web.config برنامه را مشابه web.config زیر تغییر دهید. تنظیمات Castle ActiveRecord در اینجا قرار دارند.





















دقت کنید که دیتابیس معرفی شده در connection string باید از قبل ساخته شده باشد ولی نیازی است که جداول آن آماده شده باشد.

۷- با هر بار اجرای برنامه بایستی Castle ActiveRecord مقدار دهی اولیه یا Initialize شود. این کار از طریق متود Application_Start فایل Global.asax انجام می‌شود. متود Application_Start باید مشابه زیر باشد.

protected void Application_Start(object sender, EventArgs e)
{
if (ActiveRecordStarter.IsInitialized)
return;

IConfigurationSource config = ActiveRecordSectionHandler.Instance;
ActiveRecordStarter.Initialize(Assembly.Load("ActiveRecordTest"), config);
}
۸- حالا باید مکانیزمی برای ایجاد دیتابیس بر پایه Domain Entityهای برنامه که در اینجا کلاس Car است ایجاد کنیم. برای این کار باید کد ActiveRecordStarter.CreateSchema()‎ را در Page_Load صفحه CreateSchema قرار دهیم.

۹- برای شروع به کار برنامه نیاز به مقدار داده‌ی تستی داریم. برای این کار کد زیر را در Page_Load صفحه SampleData قرار دهید. نمونه کد زیر نشان می‌دهد چطور می‌توان یک instance از کلاس Car را به عنوان یک رکورد از جدول Car در دیتابیس ذخیره کرد.

Car car1 = new Car()
{
Manufacture = "Toyota",
Model = "Camery",
Color = "White",
MaxSpeed = 200
};

car1.Save();

Car car2 = new Car()
{
Manufacture = "Pride",
Model = "Saba",
Color = "Black",
MaxSpeed = 180
};

car2.Save();
۱۰- بعد از ایجاد داده تستی یک صفحه برای نمایش آنها به کاربر ایجاد می‌کنیم. برای همین به کد markup صفحه ViewData کد زیر را اضافه می‌کنیم.



۱۱- کار کدنویسی تمام شد. حالا شروع به استفاده از برنامه می‌کنیم. برای آن کار جدول کار به طور خودکار ساخته شود یک بار صفحه CreateSchema را در مرورگرتان Browse کنید. پس از این کار اگر به دیتابیس مراجعه کنید خواهید دید جدولی به نام Car با ستون‌ها مورد نظر شما ساخته شده است.

۱۲- حال برای ایجاد تعدادی داده تستی یک بار صفحه SampleData را در مرورگرتان Browse کنید. با این کار ۲ رکورد به جدول Car اضافه می‌شود.

۱۳- حال به صفحه ViewData بروید تا داده‌های ایجاد شده در مرحله قبل از دیتابیس load شده و به شما نمایش داده شود.

۱۴- کار تمام شد. به همین سادگی! سورس این پروژه امتحانی در این آدرس موجود است. برای یادگیری تکمیلی به راهنمای ActiveRecord فراسان یا این آدرس مراجعه کنید.