zoukankan      html  css  js  c++  java
  • 2.NET Core设定数据库种子

     

    1.使用以下代码在 Models 文件夹中创建一个名为 SeedData 的新类:

    using Microsoft.EntityFrameworkCore;
    using Microsoft.Extensions.DependencyInjection;
    using System;
    using System.Linq;

    namespace RazorPagesMovie.Models
    {
    public static class SeedData
    {
    public static void Initialize(IServiceProvider serviceProvider)
    {
    using (var context = new RazorPagesMovieContext(
    serviceProvider.GetRequiredService<
    DbContextOptions<RazorPagesMovieContext>>()))
    {
    // 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-2-12"),
    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();
    }
    }
    }
    }

    2.添加种子初始值设定项

    在 Program.cs 中,修改 Main 方法以执行以下操作:
    从依赖关系注入容器获取数据库上下文实例。
    调用 seed 方法,并将上下文传递给它。
    Seed 方法完成时释放上下文。
    下面的代码显示更新后的 Program.cs 文件。

    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Logging;
    using RazorPagesMovie.Models;
    using System;
    using Microsoft.EntityFrameworkCore;

    namespace RazorPagesMovie
    {
    public class Program
    {
    public static void Main(string[] args)
    {
    var host = CreateWebHostBuilder(args).Build();

    using (var scope = host.Services.CreateScope())
    {
    var services = scope.ServiceProvider;

    try
    {
    var context=services.
    GetRequiredService<RazorPagesMovieContext>();
    context.Database.Migrate();
    SeedData.Initialize(services);
    }
    catch (Exception ex)
    {
    var logger = services.GetRequiredService<ILogger<Program>>();
    logger.LogError(ex, "An error occurred seeding the DB.");
    }
    }

    host.Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>();
    }
    }

  • 相关阅读:
    掌上风云
    骗子太多傻子不够用了
    关于WP7的一点想法
    诺基亚的抉择
    Windows Embedded Compact 7 试用笔记(3)
    Windows Embedded Compact 试用笔记(2)——系统定制
    重开博客
    结构体的嵌套问题
    Delphi 2010 新增功能之: IOUtils 单元(1): 初识 TDirectory.GetFiles
    TImage、TPaintBox、TPicture、TBitmap、TCanvas、TGraphic 的关系与区别
  • 原文地址:https://www.cnblogs.com/ouyangkai/p/10912664.html
Copyright © 2011-2022 走看看