کار با SQL Server LocalDB
پنجشنبه 4 شهریور 1395در این مقاله قصد داریم در ASP.NET CORE برای ساخت و ویرایش جدول های بانک اطلاعاتی از SQL LocalDB استفاده کنیم و نحوه کار با آن را آموزش دهیم .
کلاس ApplicationDbContext برنامه را به بانک اطلاعاتی متصل کرده و Object ها و رکورد های درون بانک اطلاعاتی را مدیریت می کند.در Startup.cs database Context با تزریق وابستگی سفارشی شده است.
public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
سیستم پیکربندی ASP.NET Core رشته اتصال را می خواند. برای کار با محیط Local رشته اتصال را میتوان در فایل appsettings.json مشاهده کنید .
{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-MvcMovie-4ae3798a;Trusted_Connection=True;MultipleActiveResultSets=true" }, "Logging": { "IncludeScopes": false,
هنگامی که شما یک برنامه را آزمایش می کنیم و بر روی سرور قرار می دهید ، میتوان یک enviroment variable یا با یک روش دیگر ، رشته اتصال را بر روی یک SQL Server تنطیم کنید.
SQL Server Express LocalDB
LocalDB یک نسخه سبک از SQL Server است که موتور آن برای توسعه برنامه ها کاربرد دارد .LocalDB توسط کاربر اجرا و درخواست می شود ، بنابراین ، مجموعه پیکربندی ها در آن قرار دارد . به طور پیش فرض ، پایگاه داده ساخته شده Local با پسوند “.mdf” در مسیر C:/Users/<user> ایجاد شده است .
از منوی View ، SQL Server Onject Explorer را باز کنید.
بر روی جدول Movie کلیک راست کرده و ViewDesigner را انتخاب کنید.
نکته:EF به طور پیش فرض فیلد ID را کلیک اصلی قرار می دهد . ایکون کلید کنار ID نشان دهنده کلیک اصلی است.
برروی جدول Movie کلیک راست کرده و View Data را انتخاب کنید .
Seed the database
یک کلاس به نام SeedData در پوشه Models ایجاد می کنیم . کدهای زیر را وارد کنید:
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using MvcMovie.Data; using System; using System.Linq; namespace MvcMovie.Models { public static class SeedData { public static void Initialize(IServiceProvider serviceProvider) { using (var context = new ApplicationDbContext( serviceProvider.GetRequiredService<DbContextOptions<ApplicationDbContext>>())) { // Look for any movies. if (context.Movie.Any()) { return; // DB has been seeded } context.Movie.AddRange( new Movie { Title = "When Harry Met Sally", ReleaseDate = DateTime.Parse("1989-1-11"), Genre = "Romantic Comedy", Price = 7.99M }, new Movie { Title = "Ghostbusters ", ReleaseDate = DateTime.Parse("1984-3-13"), Genre = "Comedy", Price = 8.99M }, new Movie { Title = "Ghostbusters 2", ReleaseDate = DateTime.Parse("1986-2-23"), Genre = "Comedy", Price = 9.99M }, new Movie { Title = "Rio Bravo", ReleaseDate = DateTime.Parse("1959-4-15"), Genre = "Western", Price = 3.99M } ); context.SaveChanges(); } } } }
توجه داشته باشید هر فیلدی که در بانک اطلاعاتی قرار داشته باشد ، Return می شود.
if (context.Movie.Any()) { return; // DB has been seeded. }
Seed initializer را به به پایان پیکر بندی درون Startup.cs اضافه می کنیم:
app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); #endregion SeedData.Initialize(app.ApplicationServices); } // End of Configure.
آزمایش برنامه
تمام رکورد های پایگاه داده را پاک می کنیم ، شما میتوان این کار را با لینک Delete در مرورگر یا SSOX انجام دهید .
برنامه را مجبور به مقدار دهی اولیه می کنیم ، (متدهای درون Statup را فراخوانی می کنیم) بنابراین متد seed اجرا می شود.
برای این کار باید IIS Express را متوقف کنیم و دوباره اجرا کنیم .میتوان با روش های زیر این کار را انجام دهید :
در قسمت notification ویندوز برروی IIS کلیک راست کرده و Exit یا Stop site را انتخاب کنید
اگر ویژوال استودیو را در حالت Debug اجرا نکرده اید با دکمه F5 آن را اجرا کنید .
اگر ویژوال استودیو را در حالت Debug اجرا کرده اید آن را متوقف کرده و دوباره اجرا کنید.
برنامه داده های Seed را نمایش می دهد .
- SQL Server
- 5k بازدید
- 7 تشکر