اموزش 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/

اشتراک گذاری پست

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *