نظرات مطالب
آشنایی با NHibernate - قسمت هفتم
سیستم NHibernate از روز اول آن Code first بوده. EF هم در نگارش آخر آن به این نتیجه رسیده که روش Code first انعطاف پذیری بیشتری داره و دقیقا چیزی هست که برنامه نویس‌ها با آن راحت‌تر هستند.
البته برای NH یک سری ابزار تجاری توسط شرکت‌های ثالث درست شده که طراح دارد ولی ... فکر نمی‌کنم با استقبال مواجه شده باشد چون روش Code first یعنی رها شدن از انبوهی کد که توسط ابزارها نوشته می‌شن و عموما هم بهینه نیستند.
نظرات مطالب
EF Code First #11
یک دلیل مهم برای ایجاد یک Abstraction بر روی EF CodeFirst وجود دارد و آن هم استقلال از EF و IQueryable است. مثلاً ممکن است شما بخواهید بعداً به جای EF از NHibernate استفاده کنید. و یا ممکن است (حتماً) تکنولوژی جدیدتری بعد از EF وارد کار شود. از همه مهمتر ممکن است بخواهید از الگوی Adapter یا Decorator استفاده کنید. مثلاً یک Repository که اطلاعات یک جدول را به صورت Encrypt شده در بانک اطلاعات ذخیره می‌کند. و مثلاً به صفحه بندی سمت سرور هم نیاز دارید و حتی امکان استفاده از IQueryable هم وجود ندارند.
نظرات مطالب
ارتقاء به NHibernate 3.2
برای شروع کتابهای زیادی هست ولی من خودم بشخصه راهنمایی که جناب نصیری توی این وبلاگ گذاشتن رو بهترین شروع میدونم
در صورتیکه تمایل داشتید فایل پی دی اف این مجموعه تهیه شده که از لینک زیر میتونید دریافتش کنید، البته بعد از این فایل بنظرم فصل یازدهم کتاب NHibernate 3 Beginners Guide - Aug.2011 هم برای آشنایی با مشکلاتی که بطور معمول برنامه نویسان مرتکب میشن خیلی خوبه.
لینک: http://www.mediafire.com/?4a3ajd1t787ha6n
نظرات مطالب
NHibernate و مدیریت خودکار تغییرات ساختار بانک اطلاعاتی
در بیشتر شرکت هایی که به طریقی میخوان از بانک هم ورژن داشته باشند معمولا کنار هر پروژه یک پروژه از نوع بانک ساخته میشه (فقط MS SQL) ولی با این امکان NHibernate دیگه احتیاجی به نگهداری یک پروژه موازی نیست، همه تسک ها بصورت مجتمع و مدیریت شده در کلاسهای سطح سلوشن نگهداری میشه.
واقعا پست هاتون برای توسعه دهنده ها یه نوع واکسیناسیون میمونه ;)
نظرات مطالب
ارتقاء به NHibernate 3.2
ممنون.
بنظرتون همین تغییرات میتونه دلیل(بهونه) خوبی برای استفاده از EF باشه.
بنظرتون به ریسکش می ارزه که وقت بذاری و فردا روزی این روش هم ...
من سایت کارویس رو که دنبال میکنم زیاد آگهی که NHibernate کار; بخوان ندیدم.بنظرتون این دلیل استقبال کم(البته با استناد به فید های سایت کارویس) چی میتونه باشه؟
نظرات مطالب
آیا دیتابیس مورد استفاده در NHibernate با نگاشت‌های تعریف شده همخوانی دارد؟
سلام اقای نصیری
قبلا داخل وبلاگ شما یا دیگران دقیق یادم نیست با کلاس
SchemaValidator آشنا شدم این کلاس برای چک کردن وجود دیتابیس برای nhibernate بود
میخواستم ببینم از همین کلاس می تونه جایگزین همین کد شما در این پست باشه یا فقط برای چک کردن وجود بانک بکار میره و آیا این کد الان شما فقط برای چک تغییرات است یا برای چک کردن خود بانک هم می تونه بکار بره
با تشکر
نظرات مطالب
SQL تولیدی در NHibernate از کدام متد صادر شده است؟
بله، در تعداد رکورد بالا مثلا در یک گرید در صفحه، حتما مشکل‌زا است. کلا روش در این مورد زیاد هست، منجمله روشی که در قسمت 5 آموزش MVVM در سایت جاری هست. یا روشی که شما ذکر کردید، یا یک روش دیگر هم استفاده از فریم ورک‌های AOP است. این‌ها روی کد IL نهایی تاثیر می‌گذارند.
ولی در نهایت همان روش سنتی استفاده از رشته‌ها، هر چند کمی طولانی‌تر است، اما بهترین کارآیی و کمترین سربار را هم دارد.

مطلبی هم که من در اینجا عنوان کردم در مورد دیباگ یک سیستم مبتنی بر NHibernate هست و بدیهی است قرار نیست در محیط کاری از آن استفاده شود.
نظرات مطالب
آشنایی با NHibernate - قسمت دوم
سلام استاد نصیری
با تشکر از بزرگواری جنابعالی در شریک کردن ما در تجربیات و دانسته هاتون در مورد قسمت دوم سوال داشتم: اینکه این سه تا کلاس رو تو داکیومنتهای NHibernate گفته شده که برای آزمایش واحد باید ایجاد کرد؟ امکانش هست مرحله به مرحله به زبان ساده تر بفرمایید وقتی آزمایش واحد شروع میشه چه اتفاقی میفته در اینجا؟
ممنون از شما استاد گرامی
نظرات مطالب
آشنایی با آزمایش واحد (unit testing) در دات نت، قسمت 4
- در NHibernate برای این نوع تست‌ها تا جایی که دیدم از دیتابیس SQLite تشکیل شده در حافظه استفاده می‌کنند. به این صورت مزایای سرعت و همچنین حذف خودکار داده‌ها پس از پایان کار برقرار است.
- ضمناآزمایش واحدی که از مرزهای برنامه خارج شود دیگر آزمایش واحد نام ندارد به همین جهت mocking frameworks برای این نوع کارها ایجاد شده است. (برای کار با دیتابیس، کار با smtp server ، کار با فایل سیستم و مواردی از این دست)
نظرات مطالب
نرمال سازی (قسمت سوم: Third Normal Form)
خوب، اگر این سه قسمت رو بخواهیم با EF Code first مدل کنیم: 
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

public class Student
{
    public int Id { set; get; }
    public string Name { set; get; }

    //هر دانشجو چند ترم در دانشگاه خواهد بود
    public virtual ICollection<Semester> Semesters { set; get; }
    //هر دانشجو چندین واحد دارد
    public virtual ICollection<Unit> Units { set; get; }
}

public class Semester
{
    public int Id { set; get; }
    public string Name { set; get; }
    public int Average { set; get; }

    [ForeignKey("StudentId")]
    public virtual Student Student { set; get; }
    public int StudentId { set; get; }
}

public class Unit
{
    public int Id { set; get; }
    public string Name { set; get; }
    public string UnitType { set; get; }
    public int NumberOfUnits { set; get; }

    [ForeignKey("StudentId")]
    public virtual Student Student { set; get; }
    public int StudentId { set; get; }
}
به نظر می‌رسه که خاصیت Average جاش در کلاس Semester نیست. حتی به Unit هم نباید به صورت مستقیم ارتباط پیدا کنه. نیاز به یک کلاس دیگر هست که بتونه به ازای هر دانشجو، ترم و واحد، نمره ثبت کرد. میانگین، یک خاصیت آماری است که می‌تونه اصلا لحاظ نشه و در گزارشات محاسبه بشه.
و یا هر ترم یک سری واحد داره. اینطوری چطور؟ چون الان مشخص نیست در هر ترم چه واحدهایی برداشته.