SalarDbCodeGenerator نسخه 2 و NHibernate
۱۳۹۱/۰۶/۰۳ ۱۴:۲۸ منتشر شده در تاریخ : ۱۳۹۱/۰۶/۰۳ دسته بندی : معرفی ، SalarDbCodeGenerator 1
در پست قبلی با SalarDbCodeGenerator آشنا شدید. در این پست می خواهیم نسخه 2 این نرم افزار رو به طور خلاصه بررسی کنیم.
برخی از تغییرات مهم نسخه 2:
لیست کامل تغییرات در صفحه دانلود قرار دارد.
نگاهی به پیاده سازی NHibernate MappingByCode انجام شده.
پیاده سازی نگاشتها بدون استفاده ClassMapping و صرفا با استفاده از کلاس کمکی ModelMapper انجام شده است. این متد کمکی در فایل SampleDbMapper قرار می گیرد.
همچنین برای پیاده سازی های سفارشی متد دیگری با نام CustomMapToModel در نظر گرفته شده است.
در کل ساختار پروژه به این صورت می شود:
طریقه استفاده از این پروژه ساده است. با استفاده از کلاس کمکی SampleDbSession یک نمونه از session را ایجاد کرده و بقیه اعمال را به منوال عادی NHibernate انجام می دهیم:
برخی از تغییرات مهم نسخه 2:
- الگوی جدید NHibernate MappingByCode (پشتیبانی از MVVM و data annotations)
- الگوی جدید Dapper+SQLinq که از کتابخانه SQLinq و توابع کمکی در Dapper استفاده می کنه
- باز نویسی مجدد موتور شمای الگوها
- بازنویسی مجدد موتور اصلی
- شمای جدید پروژههای برنامه
- به روز شدن همه الگوها
- بهبود سرعت کلی تولید کد
- خواندن و شناسایی اعمال کلید خارجی
- پشتیبانی از توضیحات ستون ها در oracle و sqlCe
لیست کامل تغییرات در صفحه دانلود قرار دارد.
نگاهی به پیاده سازی NHibernate MappingByCode انجام شده.
پیاده سازی نگاشتها بدون استفاده ClassMapping و صرفا با استفاده از کلاس کمکی ModelMapper انجام شده است. این متد کمکی در فایل SampleDbMapper قرار می گیرد.
همچنین برای پیاده سازی های سفارشی متد دیگری با نام CustomMapToModel در نظر گرفته شده است.
در کل ساختار پروژه به این صورت می شود:
Base\SampleDbBase.cs
Entities\DataAnnotations\*Meta.cs
Entities\UserEntities\*Entity.cs
Entities\Principal\EntityObjects.cs
Entities\SampleDbMapper.cs
Entities\SampleDbMapper.User.cs
Entities\SampleDbSession.cs
app.config
تقریبا ساختار بیشتر پروژه های تولید شده توسط این برنامه به همین شکل است. به همین منوال بقیه، کلاس پایه SampleDbBase.cs شامل چند متد اضافی هست که به تهیه کپی از کلاسهای مدل کمک می کند. از جمله متدهای CloneUnproxied و CopyUnproxied که یک نمونه بدون پراکسی را تهیه می کنند.Entities\DataAnnotations\*Meta.cs
Entities\UserEntities\*Entity.cs
Entities\Principal\EntityObjects.cs
Entities\SampleDbMapper.cs
Entities\SampleDbMapper.User.cs
Entities\SampleDbSession.cs
app.config
طریقه استفاده از این پروژه ساده است. با استفاده از کلاس کمکی SampleDbSession یک نمونه از session را ایجاد کرده و بقیه اعمال را به منوال عادی NHibernate انجام می دهیم:
using (var session = SampleDbSession.OpenSession()) { var newCar = new Car() { Color = "white" }; session.Save(newCar); session.Flush(); } using (var session = SampleDbSession.OpenStatelessSession()) { dataList = session.Query<car>().Where(x => x.Color == "white"); }
نگاهی به Dapper+SQLinq
این الگو همانند الگوی DapperAccess است که کتابخانه SQLinq به آن اضافه شده است. این کتابخانه این امکان را برای Dapper فراهم می کند که با استفاده از عبارات LINQ کوئری مورد نظر بدون استفاده مستقیم از عبارات sql عملیات استاندارد را انجام دهد. ترکیب Dapper و این کتابخانه راحتی و سرعت قابل قبولی را فراهم می کند.
این کتابخانه فقط از SqlServer پشتیبانی می کند.
نمونه کد:
using (var dap = new CarDap()) { dataList = dap.Query(new SQLinq<car>().Where(x => x.Color == "white")); }
بهبودها و نسخه بعدی
در این نسخه از SalarDbCodeGenerator اصلاح کننده نام های نامعتبر تغییرات زیادی کرده و بهبود یافته است. به همین علت ممکن است که پروژه تولید شده با این نسخه سازگار با نسخه های قبلی سازگار نباشد.
همچنین برای نسخه های آینده احتمالا بر روی ویژگی های جدید EF5 کار خواهم کرد (پشتیبانی از Enum و Table-Valued).
نظر شما چیست؟ چه ویژگی به نظرتون حیاتی است و می خواهید در نسخه بعدی مشاهده کنید؟
دانلود
- صفحه دانلود
- کد پروژه (به git تغییر داده شد. اکنون می توان از روی پروژه fork ایجاد کرد)
- گزارش خطا و اصلاحات
کارت خیلی عالیه، خودت باهاش پروژه واقعی انجام دادی؟ نتیجه چقدر برات رضایت آمیز بوده؟
پاسخحذف