.Net Core Razor 2. VS2022 + Core6.0 + Razor 添加模型
这里基本是按照微软的文档示例整理的
添加数据模型
在项目中新增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页面,正常情况下这两个页面能打开。
配置文件appsettings.json
此时配置文件已经自动生成了数据库连接配置,默认用的是VS高版本自带的轻量级数据库LocalDB,因为是学习,所以就用LocalDB演示,工作中通常都会是Sqlserver,Mysql等。
"ConnectionStrings": { "StandardCoreStudyContext": "Server=(localdb)\\mssqllocaldb;Database=StandardCoreStudy.Data;Trusted_Connection=True;MultipleActiveResultSets=true" }
格式跟配置其他数据库是一样的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战