اموزش Factory DbProvider
در این قسمت اموزش طراحی وب سایت با asp.net به Factory DbProvider میپردازیم
تا بحال اگر دقت کرده باشيد تمام کدھای Asp.NET ما با Sql بود.يعنی ھيچ يک از آنھا با پايگاه داده ی Access کار نميکرد.مثلا Connection ما از نوع SqlConnection بود.و يا DataReader-Command-Parameter و….پس استفاده از آن توابع در يک پايگاه داه به جز Sql غير ممکن است.از نظر بعضی ھا اين يک مشکل محسوب می شود در وب سایت بنابراين ASP.NET اين مشکل را با ارايه ی Provider- Agnostic Code حل کرد Provider-Agnostic Code. يک روش در جھت ايجاد Component است تا ھمه چيز را تحت نظر بگيرد تا طراحی وب سایت بهتری داشته باشیم
.کلاس مورد استفاده ی ما در اين روش کلاس dbproviderFactory است.با اين کلاس شما می توانيد تابعی برای اتصال و مديريت پايگاه داده بنويسيد که مانند يک Component عمل می کند و در ھمه نوع پايگاه داده قابل استفاده است.برای استفاده از اين کلاس بايد فضای نام زير را Imports گنید:
Imports System.Data.Common
برای تعريف متغير از نوع اين کلاس به صورت زير عمل کنيد:
Dim pr As DbProviderFactory
اين کار يک متغير به نام Pr ازنوع اين کلاس را تعريف کرد.برای انجام ھرگونه کاری با اين متغير ابتدا می بايست از متد GetFactory آن استفاده کنيد که به نظر يک جور New کردن اين کلاس است.برای اين کار ھم از متد dbProviderFactories استفاده می کنيم:
(” Dim pr As DbProviderFactory = DbProviderFactories.GetFactory(“provider name as string
قسمت اول که اعلان متغير است.در قسمت دوم اگر به آرگومان ورودی متد GetFactory دقت کنيد نوشته شده نام تھيه کننده از نوع رشته ای!!!.اين يعنی چه؟اين ھمان فضای نام مربوطه به پايگاه داده است.اين فضای نام را بايد به آن بدھيم.اگر دستی اين کار را کنيم به صورت زير است:
(“DbProviderFactories.GetFactory(“system.data.sqlclient
ولی اين اصلا درست نيست چون اگر اين طور باشد کار ما فقط مربوط به SqlDataBase می شود و اين با گفته ھای پيشين ما در رابطه با Component بودن اين روش در تناقض است.خوب برای حل اين مشکل می توانيم اين رشته را به عنوان
آرگومان تابع دريافت کنيم.ولی اين باعث پيچيدگی زياد می شود که مثلا آرگومان ورودی ما System.data.sqlclient باشد.راه حل بھتر استفاده از AppSetting در Web.Config است:
<appSettings>
<add key=”factory” value=”System.Data.SqlClient”/>
</appSettings>
حال می توانيد اين فضای نام را بازيابی کنيم و از آن به عنوان ورودی متد GetFactory استفاده کنيم:
(“Dim factory As String = ConfigurationManager.AppSettings(“factory
(“Dim pr As DbProviderFactory = DbProviderFactories.GetFactory(factory
حال اگر AppSetting را به صورت زير بنويسيد می توانيد ھمه نوع پايگاه داده را پشتيبانی کنيد:
<appSettings>
<add key=”factory0″ value=”System.Data.SqlClient”/>
<add key=”factory1″ value=”System.Data.OracleClient”/>
<add key=”factory2″ value=”System.Data.Oledb”/>
<add key=”factory3” value=”System.Data.Odbc”/>
</appSettings>
در پست بعی ادامه این متلب را دنبال میکنیم .
اموزش بیشتر در وب سایت https://www.asp.net/
دیدگاهتان را بنویسید