怪物奇妙物语

宇宙无敌超级美少男的怪物奇妙物语

首页 新随笔 联系 管理
  819 随笔 :: 0 文章 :: 2 评论 :: 16万 阅读

如何使用数据库

创建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())
{
// Summary:
// Get service of type T from the System.IServiceProvider.
// Parameters:
// provider:
// The System.IServiceProvider to retrieve the service object from.
// Type parameters:
// T:
// The type of service object to get.
// Returns:
// A service object of type T or null if there is no such service.
var service = scope.ServiceProvider.GetService<Seed>();
service.SeedDataContext();
}
}
app.Run();
posted on   超级无敌美少男战士  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2022-01-07 U盘被切割成两个硬盘,如何恢复成一个?
点击右上角即可分享
微信分享提示