最新要闻
- 艾迪药业艾邦德 复邦德 上市发布会盛大召开 快播报
- 仅重998g!LG推出Gram SuperSlim笔电:10.9mm纤薄机身
- 锐龙R9-7945HX游戏本实测:性能恐怖 渲染能力媲美桌面版-环球快看
- 国产芯片新突破!龙芯3A5000成功应用于3D打印|焦点热门
- 最资讯丨画二次元画首先学什么,南京二次元画哪里可以学
- 海大集团接待AllianzGlobal等多家机构调研|全球时快讯
- 谷歌创始人大量抛售特斯拉股票:曾被曝马斯克绿了他 今日讯
- 光刻机订单占了30% ASML喊话:绝对不能失去中国市场_天天头条
- 今日快讯:小米盒子怎么看电视直播_小米盒子看电视直播的方法
- 男子聊天界面投屏广场成大型社死现场:全网都知道他不回老婆微信了 重点聚焦
- 每日精选:首例涉“虚拟数字人”侵权案宣判:被告判消除影响并赔12万
- 每日动态!89英寸三星MICRO LED电视全球首秀:RGB无机自发光、支持音画追踪
- 研究所预测:2070年日本总人口将降至8700万-每日时讯
- 华为88W充电器A/C口二选一引争议 华为李小龙:对用户最友好的设计_快资讯
- 世界快报:小小善举 温暖一座城!搀扶残障人士过马路的暖心司机找到了
- 韩媒:拜登向尹锡悦推荐“零度可乐”,韩网友嘲讽“给你的也只有零”_全球热闻
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
ASP.NET Core MVC 从入门到精通之数据库|热点聚焦
随着技术的发展,ASP.NET Core MVC也推出了好长时间,经过不断的版本更新迭代,已经越来越完善,本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容,适用于初学者,在校毕业生,或其他想从事ASP.NET Core MVC 系统开发的人员。 经过前几篇文章的讲解,初步了解ASP.NET Core MVC项目创建,启动运行,以及命名约定,创建控制器,视图,模型,接收参数,传递数据,路由,页面布局,wwwroot和客户端库,Razor语法等内容,今天继续讲解ASP.NET Core MVC 中EnityFrameworkCore与数据库等相关内容,仅供学习分享使用。
EntityFrameworkCore简介
Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术。
EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:
(相关资料图)
- 使 .NET 开发人员能够使用 .NET 对象处理数据库。
- 无需再像通常那样编写大部分数据访问代码。
创建数据库
在ASP.NET Core MVC项目中,环境搭建常过有两种模式:Code First和DB First,在本例中主要采用DB First模式,使用的数据库为SQL Server 2012。首先创建数据库,并命名称MovieDB,然后创建数据表Movie,如下所示:
通过数据库右键进行创建数据库,创建表的语句如下所示:
1 USE [MovieDB] 2 GO 3 4 /****** Object: Table [dbo].[Movie] Script Date: 2023/4/25 23:53:21 ******/ 5 SET ANSI_NULLS ON 6 GO 7 8 SET QUOTED_IDENTIFIER ON 9 GO10 11 SET ANSI_PADDING ON12 GO13 14 CREATE TABLE [dbo].[Movie](15 [Id] [bigint] IDENTITY(1,1) NOT NULL,16 [Name] [varchar](200) NULL,17 [ReleaseDate] [datetime] NULL,18 [LeadingRole] [varchar](100) NULL,19 [Genre] [varchar](100) NULL,20 [Price] [money] NULL,21 [CreateTime] [datetime] NULL,22 [CreateUser] [varchar](50) NULL,23 [LastEditTime] [datetime] NULL,24 [LastEditUser] [varchar](50) NULL,25 CONSTRAINT [PK_Movie] PRIMARY KEY CLUSTERED 26 (27 [Id] ASC28 )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]29 ) ON [PRIMARY]30 31 GO32 33 SET ANSI_PADDING OFF34 GO
构造测试数据
在测试应用之前,首先在数据表中插入2条测试数据,以便看到效果,如下所示:
创建数据实体
数据库和数据表创建成功后,需要需要ASP.NET Core MVC项目中创建与数据表对应的实体类MovieEntity,如下所示:
1 namespace DemoCoreMVC.Entities 2 { 3 ///4 /// 电影实体 5 /// 6 public class MovieEntity 7 { 8 ///9 /// 主键唯一标识10 /// 11 public long Id { get; set; }12 13 ///14 /// 电影名称15 /// 16 public string Name { get; set; }17 18 ///19 /// 发行时间20 /// 21 public DateTime ReleaseDate { get; set; }22 23 ///24 /// 主角25 /// 26 public string LeadingRole { get; set; }27 28 ///29 /// 电影类型30 /// 31 public string Genre { get; set; }32 33 ///34 /// 票价格35 /// 36 public decimal Price { get; set; }37 38 ///39 /// 创建时间40 /// 41 public DateTime CreateTime { get; set; }42 43 ///44 /// 录入人员45 /// 46 public string CreateUser { get; set; }47 48 ///49 /// 最后编辑时间50 /// 51 public DateTime LastEditTime { get; set; }52 53 ///54 /// 最后编辑人员55 /// 56 public string LastEditUser { get; set; }57 }58 }
创建业务模型
实体用于和数据表进行映射,业务模型用于在控制器和视图之间进行数据的交互,所以为了进行分层和数据隔离,需要创建模块,在本例中模型为Movie,字段名称和Entity保持一致【也可以不一致】。如下所示:
1 namespace DemoCoreMVC.Models 2 { 3 public class Movie 4 { 5 ///6 /// 主键唯一标识 7 /// 8 public long Id { get; set; } 9 10 ///11 /// 电影名称12 /// 13 public string Name { get; set; }14 15 ///16 /// 发行时间17 /// 18 public DateTime ReleaseDate { get; set; }19 20 ///21 /// 主角22 /// 23 public string LeadingRole { get; set; }24 25 ///26 /// 电影类型27 /// 28 public string Genre { get; set; }29 30 ///31 /// 票价格32 /// 33 public decimal Price { get; set; }34 35 }36 }
安装EntityFrameworkCore
在ASP.NET Core MVC项目中,我们使用EntityFrameworkCore操作数据库,需要安装依赖包,通过Nuget包管理器进行安装,目前版本为7.0.5,如下所示:
配置SQL Server连接字符串
在appsettings.json中,增加数据库连接字符串,配置ConnectionStrings节点,如下所示:
{ "ConnectionStrings": { "Default": "Server=数据库url;Database=MovieDb;User Id=数据库账号;Password=数据库密码;Trusted_Connection=True;;TrustServerCertificate=true;MultipleActiveResultSets=true" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "AllowedHosts": "*"}
创建DbContext
EntityFrameCore通过DbContext操作数据,需要创建属于整个项目的数据上下文,并继承于DbContext,如下所示:
1 using DemoCoreMVC.Entities; 2 using Microsoft.EntityFrameworkCore; 3 4 namespace DemoCoreMVC 5 { 6 public class MovieDbContext:DbContext 7 { 8 public MovieDbContext(DbContextOptionsoptions) 9 : base(options)10 {11 }12 13 public DbSet Movie { get; set; }14 15 protected override void OnModelCreating(ModelBuilder modelBuilder)16 {17 base.OnModelCreating(modelBuilder);18 modelBuilder.Entity ().ToTable("Movie");19 }20 }21 }
注意:在OnModelCreating中,将实体和数据表进行映射。
注入EntityFrameworkCore框架
在Program.cs中注入框架,并将appSetting.json配置的数据库连接字符串传递进去,如下所示:
1 using DemoCoreMVC; 2 using Microsoft.EntityFrameworkCore; 3 4 var builder = WebApplication.CreateBuilder(); 5 6 //注入数据库框架 7 builder.Services.AddDbContext(options => options.UseSqlServer(builder.Configuration.GetConnectionString("Default"))); 8 9 // Add services to the container.10 builder.Services.AddControllersWithViews();11 var app = builder.Build();12 13 // Configure the HTTP request pipeline.14 if (!app.Environment.IsDevelopment())15 {16 app.UseExceptionHandler("/Home/Error");17 // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.18 app.UseHsts();19 }20 app.UseHttpsRedirection();21 app.UseStaticFiles();22 app.UseRouting();23 app.UseAuthorization();24 app.MapControllerRoute(25 name: "default",26 pattern: "{controller=Home}/{action=Index}/{id?}");27 28 app.Run();
创建控制器MovieController
在项目中,创建MovieController,在Index方法中查询电影信息,并将数据传递给视图,如下所示:
1 using DemoCoreMVC.Models; 2 using Microsoft.AspNetCore.Mvc; 3 4 namespace DemoCoreMVC.Controllers 5 { 6 public class MovieController : Controller 7 { 8 private MovieDbContext movieDb; 9 10 public MovieController(MovieDbContext movieDb)11 {12 this.movieDb = movieDb;13 }14 15 public IActionResult Index()16 {17 //1.获取数据库实体18 var entities = movieDb.Movie.Skip(0).Take(20).ToList();19 //2.将实体转换成业务模型20 var movies = entities.Select(e => new Movie()21 {22 Id = e.Id,23 Name = e.Name,24 Genre = e.Genre,25 LeadingRole = e.LeadingRole,26 Price = e.Price,27 ReleaseDate = e.ReleaseDate,28 }).ToList();29 ViewData.Add("Movies",movies);30 return View();31 }32 }33 }
创建视图Index.cshtml
视图用于显示电影列表,代码如下所示:
1 @{ 2 ViewData["Title"] = "Index"; 3 var movies = ViewData["Movies"] as List; 4 } 5 6 Index
78 9
10 18 19 @for (var i = 0; i < movies.Count; i++)20 {21 var movie = movies[i];22序号 11电影名称 12类型 13主演 14上映时间 15票价 16功能 1723 31 }32@movie.Id 24@movie.Name 25@movie.Genre 26@movie.LeadingRole 27@movie.ReleaseDate 28@movie.Price 29编辑 | 删除 30
运行测试
经过上述步骤,程序已经搭建完成,运行程序并输入URL:https://localhost:7152/Movie,打开效果如下所示:
参考文章
本文主要参考文章如下:
数据库故障排查:https://learn.microsoft.com/zh-cn/troubleshoot/sql/welcome-sql-server
ASP.NET Core MVC入门之数据库:https://learn.microsoft.com/zh-cn/aspnet/core/tutorials/first-mvc-app/working-with-sql?view=aspnetcore-7.0&tabs=visual-studio
以上就是ASP.NET Core MVC从入门到精通之数据库的全部内容,旨在抛砖引玉,一起学习,共同进步。
关键词:
-
焦点日报:web: pdf_converter | DASCTF Apr.2023 X SU战队2023开局之战
题目内容这道题是给源码的,是个thinkphp项目,可以直接看看控制器就一个pdf方法,用了dompdf库,然后把用
来源: ASP.NET Core MVC 从入门到精通之数据库|热点聚焦
焦点日报:web: pdf_converter | DASCTF Apr.2023 X SU战队2023开局之战
只需六步!快速开启专属的风控系统
艾迪药业艾邦德 复邦德 上市发布会盛大召开 快播报
仅重998g!LG推出Gram SuperSlim笔电:10.9mm纤薄机身
锐龙R9-7945HX游戏本实测:性能恐怖 渲染能力媲美桌面版-环球快看
国产芯片新突破!龙芯3A5000成功应用于3D打印|焦点热门
最资讯丨画二次元画首先学什么,南京二次元画哪里可以学
全球速讯:饼状图的优缺点,你真的了解吗?
高保真智能录音机解决方案技术特色解析 当前要闻
使用ethtool排查网卡速率问题 世界动态
海大集团接待AllianzGlobal等多家机构调研|全球时快讯
谷歌创始人大量抛售特斯拉股票:曾被曝马斯克绿了他 今日讯
光刻机订单占了30% ASML喊话:绝对不能失去中国市场_天天头条
.NET使用一行命令轻松生成EF Core项目框架
环球精选!【解决方法】正常游览Flash页面,解决主流游览器的不支持问题(如Edge,Firefox)
今日快讯:小米盒子怎么看电视直播_小米盒子看电视直播的方法
男子聊天界面投屏广场成大型社死现场:全网都知道他不回老婆微信了 重点聚焦
每日精选:首例涉“虚拟数字人”侵权案宣判:被告判消除影响并赔12万
每日动态!89英寸三星MICRO LED电视全球首秀:RGB无机自发光、支持音画追踪
研究所预测:2070年日本总人口将降至8700万-每日时讯
华为88W充电器A/C口二选一引争议 华为李小龙:对用户最友好的设计_快资讯
世界快报:小小善举 温暖一座城!搀扶残障人士过马路的暖心司机找到了
每日快播:CloudCanal x OceanBase 数据迁移同步优化
JS中的promise返回的resolve()和reject()的理解附代码展示
韩媒:拜登向尹锡悦推荐“零度可乐”,韩网友嘲讽“给你的也只有零”_全球热闻
苹果手机黑屏但是有声音是怎么回事?苹果手机黑屏但是有声音怎么解决?
联想k860什么时候上市的?联想k860手机参数
焦点日报:马斯克疯狂降价!特斯拉Model Y已比美国新车平均价还便宜
环球看热讯:人工智能“走出”电脑!Spot机械狗成功集成ChatGPT
国产最强骁龙8 Gen2折叠屏!vivo X Fold2明天首销:8999元起
友商被苹果干趴 华为撑起国货尊严:一季度销量暴涨41%!没5G依然强-新资讯
求职者嫌8000工资高要求降到2000:HR信以为真改标准 世界今热点
电脑k歌需要什么设备?电脑k歌软件哪个好用?
2022中国男排大名单是什么?中国男排联赛2022年赛程
麦当劳被中国买下了吗?金拱门为什么还叫麦当劳?
三星堆是哪个朝代的?三星堆文明是什么民族?
佳禾智能:2022年净利润续创新高,一季度业绩强势增长|视点
为什么很多人喜欢罗永浩?罗永浩创立的手机品牌是什么?
明日方舟六星强度榜是什么?明日方舟真正的三幻神
街头霸王哪个人物最厉害?12人街霸人物原型
中国十大导演有哪些?中国内地四大导演排名
数栈V6.0全新产品矩阵发布,数据底座 EasyMR 焕新升级|世界快消息
天天热门:高清录音机市场需求调研分析
python-docx对替换后的文字设置英文字体、中文字体、字号大小、对齐方式-焦点短讯
天天短讯!东西问丨马特博博耶夫:明铁佩古城遗址为何被称为“丝绸之路活化石”?
每日热议!爱美客(300896):1Q净利润高增 厚积薄发增长势头足
上海大力建设“墨水屏”公交站牌 今年五个新城覆盖率超50%
真能横着开!现代摩比斯“e-Corner”实车演示:再不怕侧方停车了_环球即时看
王健林抛弃万达汽车
天天亮点!首发9999元 惠普暗影精灵9 SLIM上架:i9+ RTX 4060
脚感软弹 静音防滑:三福EVA洞洞拖鞋14.1元大促(原价29元) 天天速读
央行今日实现净投放590亿元
VueRouter 天天微头条
全球新消息丨WPF教程_编程入门自学教程_菜鸟教程-免费教程分享
基于Java开发支持全文检索、工作流审批、知识图谱的应用系统
前端跨域解决方案——CORS
【环球播资讯】湖北宜昌三年改造367座危桥
天天即时看!丰田:智能不是堆砌功能 制造让中国人感到喜悦的汽车
今亮点!真我11系列外观首秀:荔枝纹素皮、金色圆环抢眼
强过骁龙8 Gen3!iQOO Neo8 Pro首发天玑9200+稳了_全球热点评
全球百事通!工信部:尽快明确2023年后车购税减免政策
曾红极一时的天涯社区已无法打开 消息称欠了千万元服务器费_全球今日讯
【单例设计模式原理详解】Java/JS/Go/Python/TS不同语言实现
【世界新要闻】国防部新闻发言人谭克非就中国军队派军舰紧急撤离我在苏丹人员发表谈话
今日快看!【财经分析】深圳市4月地方债定价连续“换锚” 市场化发行水平不断提升
大熊猫丫丫启程画面曝光 网友哽咽:一路平安
5999元起!小米13 Ultra改变了米粉不爱拍照的习惯 全球速讯
全球播报:暗黑预售推动暴雪营收大幅增长
世界速递!超讯通信:2022年度净利润约1519万元
学习Linux,你提上日程了吗?
“五一”出游高峰将至 各地文旅部门多举措“迎考”
【国际大宗商品早报】国际油价显著下跌 基本金属多数上涨
郑和下西洋最远到达了哪里_郑和下西洋最远的地方|每日精选
环球短讯!小米14曝光:采用华星屏幕 边框比iPhone 14 Pro更窄
涨价到2万买吗?苹果iPhone 15系列最新渲染图来了:有USB-C接口、更圆润
iPhone、Win11正式打通:能在电脑上接打电话、收发信息了|天天速递
学系统集成项目管理工程师(中项)系列13a_人力资源管理(上)
5月26上映!《小美人鱼》发新海报 黑小美人鱼化身精灵展绝美瞬间
天天要闻:中国红牛十问泰国天丝:原版红牛凭啥在中国获取近百亿的利益?
4月26日基金净值:国寿安保稳鑫一年持有混合A最新净值1.0035,跌0.59%_热闻
焦点!浅谈errgroup的使用以及源码分析
焦点短讯!Blazor UI库 Bootstrap Blazor 快速上手 (v7.5.7)
关注:使用youtube-dl和yt-dlp下载视频!
头条:4月26日基金净值:嘉实农业产业股票A最新净值1.8912,涨0.34%
世界新资讯:华为真的很懂女人:前置拍照 媲美后置
神秘技艺挑战“精准刀法”!RTX3070性能大增的原因是什么?
电车充电的速度 就要赶上油车加油了_每日快看
感受下真正全国产的服务器、PC!能硬 也能软
【天天报资讯】Intel显卡多了一个大品牌!41年历史的旌宇
全球快资讯:人气流失!跟队:切尔西主场出现空座,这情况太罕见了
今日热议:“不动产统一登记”引发房产税热议,上海试点12年效果如何?
燃气灶自动熄火原因和处理方法图解(燃气灶自动熄火原因和处理方法)
09 管理内存对象|焦点讯息
沃尔沃最安全纯电动EX90发布!“我们会的新势力10年都学不会”
环球滚动:大熊猫丫丫已启程回国:专机飞往上海 明天抵达浦东机场
陈凯歌与倪萍结过婚吗 陈凯歌与倪萍有子女吗
关于在linux中使用tcpdump命令进行简单的抓包操作
Geotools处理shape文件 世界微速讯
中小型项目统一处理请求重复提交 天天热消息