这里基本是按照微软的文档示例整理的
添加数据模型
在项目中新增Models文件夹,用于存放数据模型
新增movie类
using System.ComponentModel.DataAnnotations; namespace StandardCoreStudy.Models { public class Movie { /// <summary> /// ID /// </summary> public int ID { get; set; } /// <summary> /// 标题 /// </summary> public string Title { get; set; } = string.Empty; /// <summary> /// 发布日期 /// 表示发布日期只需要日期,不需要精确到时间部分 /// </summary> [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } /// <summary> /// 类型 /// </summary> public string Genre { get; set; } = string.Empty; /// <summary> /// 价格 /// </summary> public decimal Price { get; set; } } }
引入必须组件
Nuget引入组件 Microsoft.EntityFrameworkCore.Design 和 Microsoft.EntityFrameworkCore.SqlServer。
选个最新的版本安装就好。
自动生成代码
创建“Pages/Movies”文件夹,这里用来放对应的页面。
在Movies文件夹上右键,添加 “已搭建基架的新项”,选择 “使用实体框架的 Razor Pages (CRUD)”
在选择 模型类 的地方选择之前建立的Models/Movie,数据上下文 点 + 号 用系统生成的上下文类名就行。
点击添加,会在Movies下自动生成多个页面,就是自动生成的增删查改等,实际开发当然不会这么简单,但是入门就无所谓了。
同时会新建一个Data文件夹,里面是之前设置 数据上下文 时命名的上下文类文件,也就是通过这个类来访问数据库。
并且在Program.cs中会自动生成代码
using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using StandardCoreStudy.Data; var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddRazorPages(); builder.Services.AddDbContext<StandardCoreStudyContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("StandardCoreStudyContext") ?? throw new InvalidOperationException("Connection string 'StandardCoreStudyContext' not found.")));
对比一下最早的Program.cs可以发现,自动生成的就是 Data中 数据上下文类的相关代码以及引用。
使用EF迁移功能创建初始数据库架构
打开PM Console
输入命令:Add-Migration InitialCreate
migrations
命令生成用于创建初始数据库架构的代码。 该架构基于在 DbContext
中指定的模型。 InitialCreate
参数用于为迁移命名。 可以使用任何名称,但是按照惯例,会选择可说明迁移的名称。
回车后可以看到项目里新增了
其中这个带日期的xxxxxx_InitialCreate.cs中,就是生成的创建初始数据库架构的代码
命令:Update-Database
update
命令在尚未应用的迁移中运行 Up
方法。 在这种情况下,update
在用于创建数据库的 Migrations/<time-stamp>_InitialCreate.cs
文件中运行 Up
方法。
数据上下文StandardCoreStudyContext
基架工具会自动创建数据上下文,并通过依赖关系注入注册相关服务
这就是Program.cs中注册服务的代码
builder.Services.AddDbContext<StandardCoreStudyContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("StandardCoreStudyContext") ?? throw new InvalidOperationException("Connection string 'StandardCoreStudyContext' not found.")));
而数据上下文的作用是:
指定数据模型中包含哪些实体。
为指定模型(本例中的Movie)协调 EF Core 功能,例如“创建”、“读取”、“更新”和“删除”。
namespace StandardCoreStudy.Data { public class StandardCoreStudyContext : DbContext { public StandardCoreStudyContext (DbContextOptions<StandardCoreStudyContext> options) : base(options) { } public DbSet<StandardCoreStudy.Models.Movie> Movie { get; set; } = default!; } }
可以尝试访问 Index,Create页面,正常情况下这两个页面能打开。
标签:Core,string,Razor,builder,get,VS2022,上下文,public,StandardCoreStudyContext From: https://www.cnblogs.com/luyShare/p/17385791.html