پیاده سازی UnitOfWork برای BrightStarDb
نویسنده: مسعود پاکدل
تاریخ: ۱۳۹۳/۰۲/۲۶ ۲۰:۰
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
[Entity]
public interface IBook
{
[Identifier]
string Id { get; }
string Title { get; set; }
string Isbn { get; set; }
}
بعد از انخاب گزینه بالا یک فایل با پسوند tt به پروژه اضافه خواهد شد که وظیفه آن جستجو در اسمبلی مورد نظر و پیدا کردن تمام اینترفیس هایی که دارای EntityAttribute هستند و همچنین ایجاد کلاسهای متناظر جهت پیاده سازی اینترفیسهای بالا است. در نتیجه ساختار پروژه تا این جا به صورت زیر خواهد شد.
واضح است که فایلی به نام Book به عنوان پیاده سازی مدل IBook به عنوان زیر مجموعه فایل DatabaseContext.tt به پروژه اضافه شده است.
تا اینجا برای استفاده از Context مورد نظر باید به صورت زیر عمل نمود:
DatabaseContext context = new DatabaseContext(); context.Books.Add(new Book());
public interface IUnitOfWork
{
BrightstarEntitySet<T> Set<T>() where TEntity : class;
void DeleteObject(object obj);
void SaveChanges();
} public class DependencyResolver
{
public static void Resolve(IWindsorContainer container)
{
var context = new DatabaseContext("type=embedded;storesdirectory=c:\brightstar;storename=test ");
container.Register(Component.For<IUnitOfWork>().Instance(context).LifestyleTransient());
}
} public class BookService
{
public BookService(IUnitOfWork unitOfWork)
{
UnitOfWork = unitOfWork;
}
public IUnitOfWork UnitOfWork
{
get;
private set;
}
public IList<IBook> GetAll()
{
return UnitOfWork.Set<IBook>().ToList();
}
public void Add()
{
UnitOfWork.Set<IBook>().Add(new Book());
}
public void Remove(IBook entity)
{
UnitOfWork.DeleteObject(entity);
}
}