ASP.NET - منابع داده

یک کنترل منبع داده با کنترل های محدود به داده تعامل دارد و فرآیندهای پیچیده اتصال داده را پنهان می کند. اینها ابزارهایی هستند که داده ها را در اختیار کنترل های داده محدود می کنند و از اجرای عملیاتی مانند درج، حذف، مرتب سازی و به روز رسانی پشتیبانی می کنند.هر کنترل منبع داده یک پایگاه داده مرتبط با ارائه‌دهنده داده، اسناد XML یا کلاس‌های سفارشی را می‌پیچد و به موارد زیر کمک می‌کند:مدیریت اتصالانتخاب داده هامدیریت جنبه های ارائه مانند صفحه بندی، کش کردن و غیره.دستکاری داده هابسیاری از کنترل‌های منبع داده در ASP.NET برای دسترسی به داده‌ها از SQL Server، از سرورهای ODBC یا OLE DB، از فایل‌های XML و از اشیاء تجاری موجود است.بر اساس نوع داده، این کنترل ها را می توان به دو دسته تقسیم کرد:کنترل های منبع داده سلسله مراتبیکنترل های منبع داده مبتنی بر جدولکنترل های منبع داده مورد استفاده برای داده های سلسله مراتبی عبارتند از:XMLDataSource - امکان اتصال به فایل ها و رشته های XML با یا بدون اطلاعات طرحواره را فراهم می کند.SiteMapDataSource - امکان اتصال به ارائه دهنده ای که اطلاعات نقشه سایت را ارائه می دهد را می دهد.کنترل های منبع داده مورد استفاده برای داده های جدولی عبارتند از:کنترل منبع داده توضیحاتSqlDataSource نشان دهنده اتصال به یک ارائه دهنده داده ADO.NET است که داده های SQL، از جمله منابع داده قابل دسترسی از طریق OLEDB و ODBC را برمی گرداند.ObjectDataSource این امکان اتصال به یک شی تجاری سفارشی .Net را فراهم می کند که داده ها را برمی گرداند.LinqdataSource این اجازه می دهد تا به نتایج یک پرس و جو Linq-to-SQL متصل شود (فقط توسط ASP.NET 3.5 پشتیبانی می شود).AccessDataSource نشان دهنده اتصال به پایگاه داده Microsoft Access است.نماهای منبع دادهنماهای منبع داده اشیایی از کلاس DataSourceView هستند. که نمایانگر یک نمای سفارشی از داده ها برای عملیات های مختلف داده مانند مرتب سازی، فیلتر کردن و غیره است.کلاس DataSourceView به عنوان کلاس پایه برای تمام کلاس‌های نمای منبع داده عمل می‌کند که قابلیت‌های کنترل‌های منبع داده را تعریف می‌کنند.جدول زیر ویژگی های کلاس DataSourceView را نشان می دهد:توضیحات خواصCanDelete نشان می دهد که آیا حذف در منبع داده اصلی مجاز است یا خیر.CanInsert نشان می دهد که آیا درج در منبع داده اصلی مجاز است یا خیر.CanPage نشان می دهد که آیا صفحه بندی در منبع داده اصلی مجاز است یا خیر.CanRetrieveTotalRowCount نشان می دهد که آیا اطلاعات تعداد کل ردیف در دسترس است یا خیر.CanSort نشان می دهد که آیا داده ها می توانند مرتب شوند یا خیر.CanUpdate نشان می دهد که آیا به روز رسانی در منبع داده اصلی مجاز است یا خیر.رویدادها فهرستی از نمایندگان مدیریت رویداد برای نمای منبع داده دریافت می کند.نام نام نما.جدول زیر متدهای کلاس DataSourceView را ارائه می کند:شرح روشهاCanExecute تعیین می کند که آیا دستور مشخص شده قابل اجرا است یا خیر.ExecuteCommand دستور خاصی را اجرا می کند.ExecuteDelete عملیات حذف را در لیست داده هایی که شی DataSourceView نشان می دهد انجام می دهد.ExecuteInsert عملیات درج را در لیست داده هایی که شی DataSourceView نشان می دهد انجام می دهد.ExecuteSelect لیستی از داده ها را از ذخیره سازی داده های زیرین دریافت می کند.ExecuteUpdate عملیات به روز رسانی را در لیست داده هایی که شی DataSourceView نشان می دهد انجام می دهد.Delete عملیات حذف را روی داده های مرتبط با نما انجام می دهد.Insert عملیات درج را روی داده های مرتبط با view انجام می دهد.داده های درخواست شده را برمی گرداند را انتخاب کنید.Update عملیات به روز رسانی را روی داده های مرتبط با نما انجام می دهد.OnDataSourceViewChanged رویداد DataSourceViewChanged را افزایش می دهد.RaiseUnsupportedCapabilitiesError با روش RaiseUnsupportedCapabilitiesError فراخوانی می شود تا قابلیت های درخواست شده برای یک عملیات ExecuteSelect با قابلیت هایی که view پشتیبانی می کند مقایسه شود.کنترل SqlDataSourceکنترل SqlDataSource یک اتصال به یک پایگاه داده رابطه ای مانند پایگاه داده SQL Server یا Oracle یا داده های قابل دسترسی از طریق OLEDB یا Open Database Connectivity (ODBC) را نشان می دهد. اتصال به داده ها از طریق دو ویژگی مهم ConnectionString و ProviderName انجام می شود.قطعه کد زیر دستور اولیه کنترل را ارائه می دهد:<asp:SqlDataSource runat="server" ID="MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString='<%$ ConnectionStrings:LocalNWind %>' SelectionCommand= "SELECT * FROM EMPLOYEES" /><asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />پیکربندی عملیات داده‌های مختلف بر روی داده‌های زیربنایی به ویژگی‌های مختلف (گروه‌های ویژگی) کنترل منبع داده بستگی دارد.جدول زیر مجموعه ای از ویژگی های مربوط به کنترل SqlDataSource را ارائه می دهد که رابط برنامه نویسی کنترل را ارائه می دهد:توضیحات گروه اموالDeleteCommand،حذف پارامترها،DeleteCommandTypeدستور SQL، پارامترها و نوع را برای حذف ردیف‌ها در داده‌های زیرین می‌گیرد یا تنظیم می‌کند.FilterExpression،پارامترهای فیلتررشته و پارامترهای فیلترینگ داده را دریافت یا تنظیم می کند.InsertCommand،InsertParameters،InsertCommandTypeدستور SQL، پارامترها و نوع را برای درج ردیف‌ها در پایگاه داده زیرین می‌گیرد یا تنظیم می‌کند.SelectCommand،انتخاب پارامترها،CommandType را انتخاب کنیددستور SQL، پارامترها و نوع را برای بازیابی سطرها از پایگاه داده زیربنایی دریافت یا تنظیم می کند.SortParameterName نام پارامتر ورودی را می گیرد یا تنظیم می کند که رویه ذخیره شده دستور برای مرتب کردن داده ها استفاده می کند.UpdateCommand،به روز رسانی پارامترها،UpdateCommandTypeدستور SQL، پارامترها و نوع را برای به‌روزرسانی ردیف‌ها در ذخیره‌سازی داده زیربنایی دریافت یا تنظیم می‌کند.قطعه کد زیر یک کنترل منبع داده را نشان می دهد که برای دستکاری داده ها فعال شده است:<asp:SqlDataSource runat="server" ID= "MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString=' <%$ ConnectionStrings:LocalNWind %>' SelectCommand= "SELECT * FROM EMPLOYEES" UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame" DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid" FilterExpression= "EMPLOYEEID > 10"> ..... .....</asp:SqlDataSource>کنترل ObjectDataSourceکنترل ObjectDataSource کلاس‌های تعریف‌شده توسط کاربر را قادر می‌سازد تا خروجی روش‌های خود را به کنترل‌های داده‌ای مرتبط کنند. رابط برنامه نویسی این کلاس تقریباً مشابه کنترل SqlDataSource است.در زیر دو جنبه مهم از اهداف تجاری الزام آور وجود دارد:کلاس bindable باید یک سازنده پیش‌فرض داشته باشد، باید بدون حالت باشد و متدهایی داشته باشد که بتوان آن‌ها را برای انتخاب، به‌روزرسانی، درج و حذف semantics نگاشت کرد.شی باید یک مورد را در یک زمان به روز کند، عملیات دسته ای پشتیبانی نمی شود.اجازه دهید مستقیماً به یک مثال برای کار با این کنترل برویم. کلاس دانشجو کلاسی است که با منبع داده شی مورد استفاده قرار می گیرد. این کلاس دارای سه ویژگی است: شناسه دانشجویی، نام و شهر. این یک سازنده پیش فرض و یک متد GetStudents برای بازیابی داده ها دارد.کلاس دانش آموز:public class Student{ public int StudentID { get; set; } public string Name { get; set; } public string City { get; set; } public Student() { } public DataSet GetStudents() { DataSet ds = new DataSet(); DataTable dt = new DataTable("Students"); dt.Columns.Add("StudentID", typeof(System.Int32)); dt.Columns.Add("StudentName", typeof(System.String)); dt.Columns.Add("StudentCity", typeof(System.String)); dt.Rows.Add(new object[] { 1, "M. H. Kabir", "Calcutta" }); dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" }); ds.Tables.Add(dt); return ds; }}مراحل زیر را برای اتصال شی با منبع داده شی و بازیابی داده انجام دهید:یک وب سایت جدید ایجاد کنید.با کلیک راست روی پروژه از Solution Explorer، اضافه کردن یک الگوی کلاس و قرار دادن کد بالا در آن، یک کلاس (Students.cs) به آن اضافه کنید.راه حل را بسازید تا برنامه بتواند از مرجع کلاس استفاده کند.یک کنترل منبع داده شی را در فرم وب قرار دهید.با انتخاب شیء منبع داده را پیکربندی کنید.روش(های) داده ای را برای عملیات های مختلف روی داده ها انتخاب کنید. در این مثال فقط یک روش وجود دارد.یک کنترل باند داده مانند نمای شبکه ای را در صفحه قرار دهید و منبع داده شی را به عنوان منبع داده اصلی آن انتخاب کنید.در این مرحله، نمای طراحی باید به شکل زیر باشد:پروژه را اجرا کنید، تاپل های کدگذاری شده سخت را از کلاس دانش آموزان بازیابی می کند.کنترل AccessDataSourceکنترل AccessDataSource نشان دهنده اتصال به پایگاه داده Access است. این بر اساس کنترل SqlDataSource است و رابط برنامه نویسی ساده تری را ارائه می دهد. قطعه کد زیر دستور اولیه منبع داده را ارائه می دهد:<asp:AccessDataSource ID="AccessDataSource1 runat="server" DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM [DotNetReferences]"></asp:AccessDataSource>کنترل AccessDataSource پایگاه داده را در حالت فقط خواندنی باز می کند. با این حال، می توان از آن برای انجام عملیات درج، به روز رسانی یا حذف نیز استفاده کرد. این کار با استفاده از دستورات و مجموعه پارامترهای ADO.NET انجام می شود.به‌روزرسانی‌ها برای پایگاه‌های داده Access از داخل یک برنامه ASP.NET مشکل‌ساز هستند، زیرا پایگاه داده Access یک فایل ساده است و حساب پیش‌فرض برنامه ASP.NET ممکن است مجوز نوشتن در فایل پایگاه داده را نداشته باشد.