Enterprise Library Data Access در#C
جمعه 4 دی 1394در این مقاله راجع به Enterprise Library صحبت خواهیم کرد.Enterprise Library یک فرم ورک است که محصولی مجتمع از چندین محصول مایکروسافت می باشد
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]"); }
بعد از اجرای برنامه خروجی زیر را خواهید دید
- ASP.net
- 1k بازدید
- 2 تشکر