首页 > 其他分享 >.Net Core 2. VS2022 + Core6.0 + Razor 添加模型

.Net Core 2. VS2022 + Core6.0 + Razor 添加模型

时间:2023-05-09 17:44:47浏览次数:40  
标签:Core string Razor builder get VS2022 上下文 public StandardCoreStudyContext

这里基本是按照微软的文档示例整理的

 

添加数据模型

在项目中新增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

相关文章

  • Customising claims transformation in ASP.NET Core Identity
    I’vebeentestingoutthenewversionofASP.NETIdentityandhadtheneedtoincludeadditionalclaimsinthe ClaimIdentity generatedwhenauserisauthenticated.TransformingClaimsIdentityASP.NETCoresupportsClaimsTransformationoutofthebox.J......
  • 【asp.net core】自定义模型绑定及其验证
    引言水此篇博客,依旧是来自群里的讨论,最后说到了,在方法参数自定义了一个特性,用来绑定模型,优先从Form取,如果为空,或者不存在,在从QueryString中获取并且绑定,然后闲着无聊,就水一篇博客,如果大家有什么需求或者问题,可以找我,很高兴能为你们带来帮助。IModelBinderFactory......
  • 【HMS Core】Health Kit想要查看数据是来自用户的哪个设备,如何查看?
     【问题描述1】如何查看运动健康数据是来自用户的哪个设备?【解决方案】可以通过返回的数据中携带的dataCollectorId来查询提供数据的设备信息:请求示例(以查询睡眠记录详情为例):1、查询睡眠记录并关联睡眠状态采样数据:​2、根据关联采样数据返回的dataCollectorId调用查询指......
  • 使用 Ef core 时 报错Data is Null. This method or property cannot be called on
    1.问题在使用EFcore做查询操作的时候报错"DataisNull.ThismethodorpropertycannotbecalledonNullvalues.”"2.解决这是数据库中的某个属性为空导致,即使这个属性srting类型,也需要将字段标记为可空的......
  • C# .net core 返回json 中文字符编码被转换或乱码问题
    开发环境VS2022+.NET6.0现象接口返回Json中文数据时出现乱码。例如后台返回结果:"0506133015\u56FE\u8868\u9009\u62E9.png"。解决办法以下方法任选其一即可。//方法1:在Program.cs中添加以下代码varbuilder=WebApplication.CreateBuilder(args);builder.Services.Ad......
  • 【Dotnet 工具箱】DotNetCorePlugins- 动态加载和卸载 .NET 程序插件
    你好,这里是Dotnet工具箱,定期分享Dotnet有趣,实用的工具和组件,希望对您有用!1.DotNetCorePlugins-动态加载和卸载.NET程序插件DotNetCorePlugins是一个.NET的开源插件项目,它提供了能够动态加载程序集的API,然后把它们作为.NET主程序的扩展程序执行。这个库主要用到了......
  • AspNetCoreRateLimit应用于MVC项目求助
    AspNetCoreRateLimit应用于MVC项目求助前言之前发过一篇文章:.NETCoreWebApi接口ip限流实践-妙妙屋(zy)-博客园(cnblogs.com)然后应用在前后端分离项目这个组件是非常好用的。但应用于不分离的项目,比如我的个人博客就有点麻烦。就是我的需求是评论接口限流,然后触发限流后......
  • ASP.NET Core MVC 从入门到精通之序列化
    随着技术的发展,ASP.NETCoreMVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NETCoreMVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NETCoreMVC系统开发的人员。经过前几篇文章的讲解,初步了解ASP.NETCore......
  • abp(net core)+easyui+efcore实现仓储管理系统——供应商管理升级之下(六十四)
    abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+eas......
  • FuzzyScore
    模糊分数implementation'org.apache.commons:commons-text:1.10.0'AmatchingalgorithmthatissimilartothesearchingalgorithmsimplementedineditorssuchasSublimeText,TextMate,Atomandothers.Onepointisgivenforeverymatchedcharacte......