نحوه ی عملکرد NHibernate در زمان ثبت رکورد در دیتابیس

وقتی در پروژه ای از NHibernate به عنوان ORM استفاده شده باشد، در زمان ثبت در دیتابیس، NHibernate یک کوئری برای Insert کردن در دیتابیس می سازد که مقادیرش را از روی getter پراپرتی ها به دست آورده است. یعنی مقداری که getter هر پراپرتی برمی گرداند را به عنوان مقدار آن پراپرتی در دیتابیس قرار می دهد.

اینترفیس Disposable و استفاده از using در #C

تایپ هایی که اینترفیس Disposable را پیاده سازی کرده اند را می توان در Using گذاشت. فایده ی using این است که زمانی که از Scope مربوطه خارج می شود، منابعی که آن تایپ استفاده می کرد را خود کامپایلر آزاد می کند.

تفاوت Cast و Convert در #C

تفاوت Cast و Convert در گستردگی استفاده آنها می باشد. Cast زمانی استفاده می شود که دو متغیر مبدا و مقصد از یک خانواده باشند اما Convert حتی برای تبدیل تایپ هایی که از یک نوع نیز نمی باشند استفاده می شود مثلا با استفاده از Convert می توان String را به int و یا به DateTime  تبدیل کرد.   

 

X2 = (int) X1;
X2 = Convert.ToInt32(X1);

در مثال فوق در خط اول برای تبدیل X1 به Int از Cast استفاده شده است و در خط دوم برای این تبدیل از Convert استفاده شده است. البته در هر دو حالت فوق در صورتی که محتوای X1 عددی نباشد Exception ایجاد می شود یعنی هیچ یک از دو روش فوق Safe Cast نمی باشند. 

اگر بخواهیم SafeCast باشد باید این تبدیل را به صورت زیر بنویسیم:  

  

 var result  = int.TryParse(X1 , out  x);

در این حالت در صورتی که نتواند متغیر X1 را به int تبدیل کند محتوای result را که boolean است false برمی گرداند و درصورتی که بتواند تبدیل کند محتوای result را true برمی گرداند و مقدار تبدیل یافته جدید را در متغیر x که از نوع Out تعریف شده است، قرار می دهد.

فراخوانی Procedure در pl/sql

در pl/Sql فراخوانی procedre ها با استفاده از دستور Execute می باشد. به عنوان مثال برای فراخوانی یک پراسیژر که ورودی اش یک integer است به صورت زیر می نویسیم: 

Execute myprocedure (1);

Exception های دستور Select Into در pl/sql

وقتی در pl/sql از دستور Select into استفاده می شود در صورتی که این دستور رکورد مورد نظر را پیدا نکند و یا بیش از یک رکورد پیدا کند Exception  می دهد. این Exception در صورتی که رکورد را پیدا نکند No_Data_Found است و در صورتی که بیش از یک رکورد پیدا کند Too_Many_Rows است. این Exception ها را به صورت زیر کنترل می کنیم: 

 

Exception  

when no_data_found 

raise_application_error(-20001, 'Record not found')

when too_many_rows 

raise_application_error(-20002, 'too  Many Records Found');