کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش 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 را در دایرکتوری CUsers/ ایجاد می کند.

از منو View گزینه SQL Server Object Explorer انتخاب کنید:

آموزش MVC Core

برروی جدول Movie راست کلید کرده و گزینه View Designer انتخاب کنید:


آموزش MVC Core

آموزش MVC Core

به علامت کلید در کنار فیلد ID دقت کنید.به طور پیش فرض EF یک مشخصه(property ) با نام ID که primary key می باشد ایجاد می کند.
برروی جدول Movie راست کلید کرده و گزینه View Data را انتخاب کنید:


آموزش MVC Core

آموزش MVC Core

Seed the database

یک کلاس جدید به نام SeedData در فولدر Models ایجاد کنید.کد های زیر را کپی کنید :

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();            }        }    }}


اگر هر فیلمی در DB وجود داشت ، مقداردهی اولیه نمی شود و هیچ فیلمی اضافه نمی شود.


if (context.Movie.Any())
{
    return;   // DB has been seeded.
}

Add the seed initializer

در فایل Startup.cs در انتهای متد Configure کد seed initializer اضافه می کنیم:

app.UseStaticFiles();
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
            SeedData.Initialize(app.ApplicationServices);
        }
    }
}

برنامه را تست کنید:

تمام پرونده ها را در DB حذف کنید. شما می توانید این کار را با لینک های Delete در مرورگر یا از SSOX انجام دهید.

برنامه را برای راه اندازي مجدد نمایید (با متدهای کلاس Startup تماس بگیرید)، بنابراین متد seed اجرا می شود. برای اعمال زودهنگام، IIS Express باید متوقف شود و مجددا راه اندازی شود. شما می توانید این کار را با هر یک از روش های زیر انجام دهید:

  • اگر برنامه در حالت non-debug mode کلید F5 را بزنید.
  • اگربرنامه در حالت debug mode می باشد ابتدا برنامه را متوقف کنید و سپس کلید F5 را بزنید.
  • برنامه داده های Seed شده را نشان میدهد:
    آموزش MVC Core
1397/02/30 4254 1119
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...