如何使用数据库
创建DataContext.cs
| using Microsoft.EntityFrameworkCore; |
| using PokemonReviewApp.Models; |
| |
| namespace PokemonReviewApp.Data |
| { |
| public class DataContext : DbContext |
| { |
| public DataContext(DbContextOptions<DataContext> options) : base(options) |
| { |
| |
| } |
| |
| public DbSet<Category> Categories { get; set; } |
| public DbSet<Country> Countries { get; set; } |
| public DbSet<Owner> Owners { get; set; } |
| public DbSet<Pokemon> Pokemon { get; set; } |
| public DbSet<PokemonOwner> PokemonOwners { get; set; } |
| public DbSet<PokemonCategory> PokemonCategories { get; set; } |
| public DbSet<Review> Reviews { get; set; } |
| public DbSet<Reviewer> Reviewers { get; set; } |
| |
| protected override void OnModelCreating(ModelBuilder modelBuilder) |
| { |
| modelBuilder.Entity<PokemonCategory>() |
| .HasKey(pc => new { pc.PokemonId, pc.CategoryId }); |
| |
| } |
| } |
| } |
Program.cs注册服务
| using Microsoft.EntityFrameworkCore; |
| |
| var builder = WebApplication.CreateBuilder(args); |
| builder.Services.AddDbContext<DataContext>(options => |
| { |
| options.UseSqlite(builder.Configuration.GetConnectionString("DefaultConnection")); |
| }); |
| |
Seed数据库
编写seed.cs
| using PokemonReviewApp.Data; |
| using PokemonReviewApp.Models; |
| |
| namespace PokemonReviewApp |
| { |
| public class Seed |
| { |
| private readonly DataContext dataContext; |
| public Seed(DataContext context) |
| { |
| this.dataContext = context; |
| } |
| public void SeedDataContext() |
| { |
| if (!dataContext.PokemonOwners.Any()) |
| { |
| var pokemonOwners = new List<PokemonOwner>() |
| { |
| new PokemonOwner() |
| { |
| |
| Pokemon = new Pokemon() |
| { |
| Name = "Pikachu", |
| BirthDate = new DateTime(1903,1,1), |
| PokemonCategories = new List<PokemonCategory>() |
| { |
| new PokemonCategory { Category = new Category() { Name = "Electric"}} |
| }, |
| Reviews = new List<Review>() |
| { |
| new Review { Title="Pikachu",Text = "Pickahu is the best pokemon, because it is electric", Rating = 5, |
| Reviewer = new Reviewer(){ FirstName = "Teddy", LastName = "Smith" } }, |
| new Review { Title="Pikachu", Text = "Pickachu is the best a killing rocks", Rating = 5, |
| Reviewer = new Reviewer(){ FirstName = "Taylor", LastName = "Jones" } }, |
| new Review { Title="Pikachu",Text = "Pickchu, pickachu, pikachu", Rating = 1, |
| Reviewer = new Reviewer(){ FirstName = "Jessica", LastName = "McGregor" } }, |
| } |
| }, |
| Owner = new Owner() |
| { |
| FirstName = "Jack", |
| LastName = "London", |
| Gym = "Brocks Gym", |
| Country = new Country() |
| { |
| Name = "Kanto" |
| } |
| } |
| }, |
| new PokemonOwner() |
| { |
| Pokemon = new Pokemon() |
| { |
| Name = "Squirtle", |
| BirthDate = new DateTime(1903,1,1), |
| PokemonCategories = new List<PokemonCategory>() |
| { |
| new PokemonCategory { Category = new Category() { Name = "Water"}} |
| }, |
| Reviews = new List<Review>() |
| { |
| new Review { Title= "Squirtle", Text = "squirtle is the best pokemon, because it is electric", Rating = 5, |
| Reviewer = new Reviewer(){ FirstName = "Teddy", LastName = "Smith" } }, |
| new Review { Title= "Squirtle",Text = "Squirtle is the best a killing rocks", Rating = 5, |
| Reviewer = new Reviewer(){ FirstName = "Taylor", LastName = "Jones" } }, |
| new Review { Title= "Squirtle", Text = "squirtle, squirtle, squirtle", Rating = 1, |
| Reviewer = new Reviewer(){ FirstName = "Jessica", LastName = "McGregor" } }, |
| } |
| }, |
| Owner = new Owner() |
| { |
| FirstName = "Harry", |
| LastName = "Potter", |
| Gym = "Mistys Gym", |
| Country = new Country() |
| { |
| Name = "Saffron City" |
| } |
| } |
| }, |
| new PokemonOwner() |
| { |
| Pokemon = new Pokemon() |
| { |
| Name = "Venasuar", |
| BirthDate = new DateTime(1903,1,1), |
| PokemonCategories = new List<PokemonCategory>() |
| { |
| new PokemonCategory { Category = new Category() { Name = "Leaf"}} |
| }, |
| Reviews = new List<Review>() |
| { |
| new Review { Title="Veasaur",Text = "Venasuar is the best pokemon, because it is electric", Rating = 5, |
| Reviewer = new Reviewer(){ FirstName = "Teddy", LastName = "Smith" } }, |
| new Review { Title="Veasaur",Text = "Venasuar is the best a killing rocks", Rating = 5, |
| Reviewer = new Reviewer(){ FirstName = "Taylor", LastName = "Jones" } }, |
| new Review { Title="Veasaur",Text = "Venasuar, Venasuar, Venasuar", Rating = 1, |
| Reviewer = new Reviewer(){ FirstName = "Jessica", LastName = "McGregor" } }, |
| } |
| }, |
| Owner = new Owner() |
| { |
| FirstName = "Ash", |
| LastName = "Ketchum", |
| Gym = "Ashs Gym", |
| Country = new Country() |
| { |
| Name = "Millet Town" |
| } |
| } |
| } |
| }; |
| dataContext.PokemonOwners.AddRange(pokemonOwners); |
| dataContext.SaveChanges(); |
| } |
| } |
| } |
| } |
注册seed服务
| |
| using Microsoft.EntityFrameworkCore; |
| var builder = WebApplication.CreateBuilder(args); |
| |
| |
| builder.Services.AddTransient<Seed>(); |
| |
| var app = builder.Build(); |
| |
| if (args.Length == 1 && args[0].ToLower() == "seeddata") |
| SeedData(app); |
| |
| void SeedData(IHost app) |
| { |
| var scopedFactory = app.Services.GetService<IServiceScopeFactory>(); |
| |
| using (var scope = scopedFactory.CreateScope()) |
| { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| var service = scope.ServiceProvider.GetService<Seed>(); |
| service.SeedDataContext(); |
| } |
| } |
| |
| app.Run(); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2022-01-07 U盘被切割成两个硬盘,如何恢复成一个?