مشخصات مقاله
-
1119
-
0.0
-
4254
-
0
-
0
آموزش MVC Core-کار با دیتابیس محلی SQL Server
آموزش MVC Core-کار با دیتا محلی SQL Server
MvcMovieContext آبجکتی است که وظیفه اتصال به پایگاه داده و نقشه سازی اشیاء فیلم به سوابق پایگاه داده را مدیریت می کند. database contextبا Dependency Injection container در متد ConfigureServices در فایل Startup.cs ثبت می شود:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddDbContext< MvcMovieContext >(options =>
options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}
سیستم پیکربندی Asp.Net Core میتواند Connection string را بخواند.برای توسعه رشته اتصال(Connection string) از فایل appsettings.json گرفته می شود.
"ConnectionStrings": {
"MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-2;Trusted_Connection=True;MultipleActiveResultSets=true"
}
هنگامی که برنامه را به یک سرور تست یا تولید اعمال می کنید، می توانید یک متغیر محیطی یا یک رویکرد دیگر برای تنظیم رشته اتصال(Connection string) به یک SQL Server واقعی استفاده کنید.
SQL Server Express LocalDB
LocalDB یک نسخه سبک SQL Server Express Database Engine است که برای توسعه برنامه هدف قرار می گیرد.
LocalDB شروع به درخواست و در حالت کاربر اجرا می شود، بنابراین هیچ پیکر بندی پیچیده ای وجود ندارد.به طور پیش فرض ،پایگاه داده محلی(LocalDB) فایل های .mdf را در دایرکتوری CUsers/
از منو View گزینه SQL Server Object Explorer انتخاب کنید: برروی جدول Movie راست کلید کرده و گزینه View Designer انتخاب کنید:
به علامت کلید در کنار فیلد ID دقت کنید.به طور پیش فرض EF یک مشخصه(property ) با نام ID که primary key می باشد ایجاد می کند.
یک کلاس جدید به نام SeedData در فولدر Models ایجاد کنید.کد های زیر را کپی کنید : اگر هر فیلمی در DB وجود داشت ، مقداردهی اولیه نمی شود و هیچ فیلمی اضافه نمی شود. در فایل Startup.cs در انتهای متد Configure کد seed initializer اضافه می کنیم: برنامه را تست کنید: تمام پرونده ها را در DB حذف کنید. شما می توانید این کار را با لینک های Delete در مرورگر یا از SSOX انجام دهید. برنامه را برای راه اندازي مجدد نمایید (با متدهای کلاس Startup تماس بگیرید)، بنابراین متد seed اجرا می شود. برای اعمال زودهنگام، IIS Express باید متوقف شود و مجددا راه اندازی شود. شما می توانید این کار را با هر یک از روش های زیر انجام دهید:
برروی جدول Movie راست کلید کرده و گزینه View Data را انتخاب کنید:
Seed the database
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Linq;
namespace MvcMovie.Models
{
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new MvcMovieContext(
serviceProvider.GetRequiredService< DbContextOptions< MvcMovieContext > >()))
{
// 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(); } } }}
if (context.Movie.Any())
{
return; // DB has been seeded.
}
Add the seed initializer
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
SeedData.Initialize(app.ApplicationServices);
}
}
}