Enterprise Library Data Access در#C

جمعه 4 دی 1394

در این مقاله راجع به Enterprise Library صحبت خواهیم کرد.Enterprise Library یک فرم ورک است که محصولی مجتمع از چندین محصول مایکروسافت می باشد

Enterprise Library Data Access در#C

Enterprise Library چیست ؟

Enterprise Library یک فرم ورک است که محصولی مجتمع از چندین محصول مایکروسافت می باشد(مانند Azure ، C# ، SharePoint و ....). این محصول بسیاری امکانات مانند اعتبارسنجی ، مدیریت استثنا ها و جابه جایی داده و ... را انجام می دهد.

زمانی که حجم عظیمی از داده ها در برنامه باید وارد شوند و یا به روزرسانی های زیادی باید انجام دهید استفاده از Enterprise Library را توصیه می نماییم.

برای آشنایی با این مفهوم یک پروژه عملی را با هم پیش می بریم .

مرحله اول:

یک پروژه Asp.net از نوع Empty ایجاد کنید.

مرحله دوم :

یک دیتا بیس به پروژه اضافه کنید .

مرحله سوم : یک صفحه web Form به پروژه اضافه کنید

مرحله چهارم :

یک کلاس به برنامه اضافه کنید و نام آنرا Enterprise DAL بگذارید.

مرحله پنجم : در این مرحله ConnectionString خود را تنظیم نمایید.

برای اینکار یک SqlDataSource اضافه می کنیم .و مانند شکل زیر Connection مورد نظر را اضافه می کنیم .

در داخل web.config رشته اتصال به صورت زیر است

   <connectionStrings>
          
          <add name="ConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True"
               providerName="System.Data.SqlClient" />
     </connectionStrings>

به دیتابیس Local که در داخل ویژوال ایجاد کرده اید چند StoredProcedure مانند زیر اضافه می کنیم .

مرحله ششم :در داخل Tools=>Nuget Package Manager=>Package Manager Consol دستور زیر را وارد کنید

Required : Install-Package EnterpriseLibrary.Data

حال در داخل کلاس EnterpriseDAL کدهای زیر را وارد می کنیم

  public class EnterpriseDAL
    {
        private static readonly Database operationalDatabase;
        static EnterpriseDAL()
        {

            operationalDatabase = new SqlDatabase(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
        }

        public void UpdateOperations()
        {
            const string storedproc = "[dbo].[Update]";
            try
            {
                using (
                    var storedProCommand = operationalDatabase.GetStoredProcCommand(storedproc, 2, "Update1", "Query1",
                        "EnterPriseLibrary"))
                using (storedProCommand.Connection = operationalDatabase.CreateConnection())
                {
                    storedProCommand.Connection.OpenAsync();
                    storedProCommand.ExecuteNonQueryAsync();
                }
            }
            catch (Exception ex)
            {
                
            }
        }

       public void SelectOperations()
        {
         try
         {
             var AllSampleData = operationalDatabase.ExecuteSprocAccessor<CollectData>("[dbo].[GetOne]", 2);
             var allSampleData2 = operationalDatabase.ExecuteSprocAccessor<CollectData>("[dbo].[GetAll]");
         }
         catch(Exception E)
         {
             
         }
         }

        public IEnumerable<CollectData> GetPerson(int id)
        {
           return operationalDatabase.ExecuteSprocAccessor<CollectData>("[dbo].[GetOne]", id);
        }

        public IEnumerable<CollectData> GetAllPerson()
        {
            return operationalDatabase.ExecuteSprocAccessor<CollectData>("[dbo].[GetAll]");
        }
        public class CollectData
        {
            public int Id { get; set; }
            public String Name { get; set; }
            public String Family { get; set; }
            public String Job { get; set; }
        }

سپس در داخل Page_load صفحه کدهای زیر را اضافه می کنیم

    protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                EnterpriseDAL obj = new EnterpriseDAL();
                obj.UpdateOperations();
                obj.SelectOperations();
                }
            catch (Exception ex)
            {
                Response.Write(ex.Message.ToString());

            }
            }

اگر برنامه را با همین شکل اجرا کنیم هیچ خروجی نخواهیم دید ولی توابع ما به درستی کار می کنند.برای اینکه یک خروجی هم از این لایه Enterprise داشته باشیم ، به صفحه Home یک GridView اضافه می کنیم .در داخل کلاس Enterprise یک تابع از نوع خروجی IEnumerable<CollectData>  می نویسیم .کدهای این دو تابع به نام های GetAllPerson و GetPerson به صورت زیر است

   public IEnumerable<CollectData> GetPerson(int id)
        {
           return operationalDatabase.ExecuteSprocAccessor<CollectData>("[dbo].[GetOne]", id);
        }

        public IEnumerable<CollectData> GetAllPerson()
        {
            return operationalDatabase.ExecuteSprocAccessor<CollectData>("[dbo].[GetAll]");
        }

بعد از اجرای برنامه خروجی زیر را خواهید دید

 

 

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید