.Net Core Mvc 2. VS2022 + Core6.0 + Mvc 添加模型
上一章我们用ViewData传递数据,但是实际生产环境的数据通常都是用模型传递的。
添加模型Movie
在Model文件夹下新建一个Movie类,根据之前建的Movie表补全代码。
using System.ComponentModel.DataAnnotations; namespace CoreMvcMovie.Models { public class Movie { public int Id { get; set; } public string? Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } public string? Genre { get; set; } public decimal Price { get; set; } } }
[DataType(DataType.Date)]:DataType特性指定ReleaseDate的类型是Date,也就是不显示也不用输出时间部分。
引入EFCore依赖项
在Nuget中找到下面2个引用,添加进项目。
添加基架
右键项目添加,选择已搭建基架的新项,选择 视图使用 EF 的 MVC控制器
下一步的选择如图,模型类选择之前新建的Movie类,上下文的话新项目没有,点后面的+号新建一个,这里我起名叫CoreMvcMovieContext,其他选项用默认的就好。
生成成功后,首先在依赖项中,会增加几个新的引用,这是基架需要的依赖项。
Program.cs
文件中向依赖关系注入注册数据库上下文。
builder.Services.AddDbContext<CoreMvcMovieContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("CoreMvcMovieContext") ?? throw new InvalidOperationException("Connection string 'CoreMvcMovieContext' not found.")));
在MoviesController控制器中可以看到构造函数通过依赖关系注入将数据库上下文注入到了控制器中
private readonly CoreMvcMovieContext _context; public MoviesController(CoreMvcMovieContext context) { _context = context; }
appsettings.json
文件自动添加了数据库连接字符串
"ConnectionStrings": { "CoreMvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=;Trusted_Connection=True;MultipleActiveResultSets=true" }
data文件夹下自动新增了数据库上下文类
初始迁移
工具->Nuget包管理器->包管理器控制台
在控制台输入命令
Add-Migration InitialCreate
Update-Database
正常情况下,会生成一个Movie的表,需要注意的是,由于我们自动生成的数据库连接串没有指定数据库名,因此会生成到系统数据库master下,可以在视图中打开sqlserver对象资源管理器看一下。
我们手动在这个表里加2条数据,生成项目,访问/Movies/Index控制器
@model指令和强类型模型
我们点击列表的details链接,跳转到details视图。
打开项目中Views/Movies/Details.cshtml文件,在头部可以看到
@model CoreMvcMovie.Models.Movie
页面上就可以使用这个指令来访问这个movie的属性了。
@Model.Title
注意这里是@Model,首字母是大写的,头部的是@model,是小写的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!