عنوان:

QueryOver Extensions


نویسنده: وحید نصیری
تاریخ: ۱۳۹۰/۰۲/۲۷ ۰۹:۱۹:۰۰
آدرس: www.dntips.ir

جهت تکمیل مطلب قبل (+)، می‌توان به ازای تمام توابع SQL موجود و همچنین تمام حالت‌های اعمال محدودیت مانند مساوی، بزرگتر، کوچکتر و امثال آن، extension method نوشت. یا اینکه یک متد داشت که بتوان پارامترهای آن را تنظیم کرد. به همین جهت کتابخانه زیر را تهیه کرده‌ام که از آدرس زیر قابل دریافت است:



نحوه استفاده:
ابتدا باید به NH معرفی شود (یکبار در ابتدای کار برنامه):
RegistrExt.RegistrMyQueryOverExts();
سپس استفاده از آن به سادگی زیر خواهد بود:
using QueryOverSqlFuncsExts;

var data = session.QueryOver<Account>()
.Where(x => x.Name.Evaluate(new SqlFunc().CharIndex("a", 1).IsEqualTo(2)))
.List();
مثال‌های بیشتر را در پوشه تست پروژه می‌توانید پیدا کنید.

نظرات

  • مهمان در ۱۳۹۰/۰۲/۲۸ ۰۸:۵۶:۵۷
    سلام مهندس
    من وقتی طبق چند پست قبلی شما از جوین استفاده میکنم این ارور رو میده
    Invalid column name 'Customer_id'
    در صورتی که من اصلا این فیلد رو ندارم و فقط جدول والد به نام 
    Customers
    است و در جدول
    Order
    نام کلید خارجی
    Customer
    است
  • وحید نصیری در ۱۳۹۰/۰۲/۲۸ ۰۹:۳۵:۵۷
    برای پاسخ دقیق نیاز هست روش مپ کردن شما رو ببینم.
    اگر دستی است احتمالا این نام تعریف شده (به ستون Id به صورت صریح انتساب داده شده)؛ بررسی کنید
    اگر  از روش AutoMap استفاده می‌کنید حدسم این است که یک Convection جایی تعریف کردید که فیلد آی دی رو به این صورت مپ کنه. (من خودم شبیه به این Convection را تهیه کردم.)
  • مهمان در ۱۳۹۰/۰۲/۲۸ ۱۰:۳۲:۲۱
    https://rapidshare.com/files/3718254390/Test1.rar
    ممنون
  • مهمان در ۱۳۹۰/۰۲/۲۸ ۱۱:۲۰:۰۵
    See http://tirania.org/blog/archive/2011/May-16.html
  • وحید نصیری در ۱۳۹۰/۰۲/۲۸ ۱۱:۳۷:۴۰
    در مورد شرکت جدید مونو در همان مطلب مخصوص آن به صورت کامنت لینک شما دیروز اضافه شد
    +
    مثال بالایی شما رو اصلاح کردم از این آدرس قابل دریافت است: (+)
  • مهمان در ۱۳۹۰/۰۲/۲۸ ۱۳:۴۲:۲۴
    Thanks!!!
  • وحید نصیری در ۱۳۹۰/۰۳/۰۱ ۱۹:۳۳:۲۱
    مبحث جاری در مورد "QueryOver Extensions" الان در trunk پروژه NHibernate قرار گرفته و از نگارش جدید آن در دسترس خواهد بود. البته syntax آن کمی تغییر کرده و مثلا شده x.DateProp.DatePart() و امثال آن، در فضای نام NHibernate.Criterion