学习ASP.NET Core Razor 编程系列二——添加一个实体
2023-02-18 15:36:34 时间
学习ASP.NET Core Razor 编程系列目录
学习ASP.NET Core Razor 编程系列一
在Razor页面应用程序中添加一个实体
在本篇文章中,学习添加用于管理数据库中的书籍的实体类。通过实体框架(EF Core)使用这些类来处理数据库。EF Core是一个对象关系映射(ORM)框架,它简化了编写数据库访问的代码。
创建的实体类被称为POCO类(“普通的CLR对象”)因为他们没有在EF Core中有任何依赖。它们定义存储在数据库中的数据的属性。
一、添加一个实体类
- 在Visual Studio 2017的解决方案资源管理器中,右键单击该RazorMvcBooks,在弹出菜单中选择,项目-->添加-->新建文件夹,修改文件夹名称为“Models”。如下图。
2. 鼠标右键单击“Models”文件夹。在弹出菜单中选择,添加-->类。类名为Book。如下图。
3.在book类中的代码文件中添加以下属性
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace RazorMvcBooks.Models { public class Book { public int ID { get; set; } public string Name { get; set; } public DateTime ReleaseDate { get; set; } public string Author { get; set; } public decimal Price { get; set; } } }
其中ID字段必须是数据库中表Book的主键。
二、添加数据库上下文类
在Models文件夹中添加BookContext.cs类,继承自DbContext,操作方式如上第2点中的图所示,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; namespace RazorMvcBooks.Models { public class BookContext:DbContext { public BookContext(DbContextOptions<BookContext> options) : base(options) { } public DbSet<Book> Book { get; set; } } }
之前的代码中我们创建了一个DbSet<Book>类型的属性Book.在实体框架中,实体集合通过对应数据库中的表,实体对应表中的行。
三、添加数据库连接字符串
在Visual Studio 2017中的资源管理器中找到appsettings.json文件,用鼠标双击打开,在文件中添加一个连接字符串,代码如下。
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "ConnectionStrings": { "BookContext": "Server=.\\sqlexpress;Database=Books;Trusted_Connection=True;MultipleActiveResultSets=true" } }
四、注册数据库上下文
在Visual Studio 2017中的资源管理器中找到startup.cs文件,用鼠标双击打开,在startup.cs文件的ConfigureServices方法中写入依赖注入容器注册数据库上下文的代码,具体代码如下。
using Microsoft.EntityFrameworkCore; using RazorMvcBooks.Models; public void ConfigureServices(IServiceCollection services) { services.AddDbContext<BookContext>(options =>options.UseSqlServer(Configuration.GetConnectionString("BookContext"))); services.AddMvc(); }
最后,在Visual Studio 2017中的菜单中选择“生成-->生成解决方案”对项目进行编译,以验证自己写的代码没有任何错误同。
相关文章
- H3C路由交换 Smart Link & Monitor Link
- 在 C# 9 中使用 foreach 扩展
- 如何实现隐式类型转换
- 如何指定多个项目的 InternalsVisibleTo
- 如何在多个应用程序中共享日志配置
- 为 ASPNETCORE 7 项目添加 Serilog
- 如何在路由绑定中使用 IParsable
- 如何使用 EF Core 7 批量删除数据
- 如何在 .Net 7 中将 Query 绑定到数组
- 实现 .Net 7 下的数据库定时检查
- 使用 BenchmarkDotNet 比较指定容量的 List 的性能
- 如何使用 IdGen 生成 UID
- 通过 CancellationToken 提高 Web 性能
- 为什么总是应该考虑给定 List 的初始大小
- 为什么 Random.Shared 是线程安全的
- 乡亲们,我们创建了 Dapr 中文交流频道
- oh,我的老伙计,你看看这近五十个dapr视频
- 字符串池化,减少了三分之一的内存占用
- 简单三分钟,本地搭建 k8s
- 基于 Blazor 打造一款实时字幕