ef core dbcontext查询的实体列表 数据不对_asp.net core 系列 21 EF现有数据库进行反向工程...

本文介绍了如何在ASP.NET Core 2.2项目中使用EF Core对已有数据库进行反向工程,创建数据访问层。通过Visual Studio 2017创建新项目,安装Entity Framework Core,运行命令生成实体和上下文,然后在Startup.cs中注册上下文,最后创建控制器和视图展示数据。
摘要由CSDN通过智能技术生成
296a6c973e3b32f49bc569757e260f14.png

一.概述

在上篇中使用EF基于数据模型创建数据库, 本篇继续使用 EF 基于数据库创建数据模型。 实现对已有数据库进行反向工程,来构建数据访问的 ASP.NET Core MVC 应用程序。已有数据库使用上篇的EFGetStarted.AspNetCore.NewDb库。这里还是使用Visual Studio 2017和sql server 2012来演示。

1.1 创建新项目

打开 Visual Studio 2017

“文件”>“新建”>“项目...”

从左菜单中选择“已安装”>“Visual C#”>“Web”。

选择“ASP.NET Core Web 应用程序”项目模板

输入 EFGetStarted.AspNetCore.ExistingDb 作为名称(它必须完全匹配稍后在代码中使用的命名空间),再单击“确定”

等待“新建 ASP.NET Core Web 应用程序”对话框显示出来

确保目标框架下拉列表设置为 .NET Core,版本下拉列表设置为 ASP.NET Core 2.2

选择“Web 应用程序(模型视图控制器)”模板

确保将“身份验证”设置为“无身份验证”

单击“确定”

1.2 安装 Entity Framework Core

安装方法上篇以有介绍。 PM> install-package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.0

1.3 对模型实施反向工程

基于现有数据库创建 EF 模型,选择“工具”–>“NuGet 包管理器”–>“包管理器控制台”。 运行以下命令(一条命令,排版是二行):

PM> Scaffold-DbContext "Data Source ={ip};Initial Catalog = EFGetStarted.AspNetCore.NewDb; User ID = hsr;Password =js*2015;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

可以通过将 -Tables 参数添加到上述命令来指定要为哪些表生成实体, 例如 -Tables Blogs,Posts。反向工程过程基于现有数据库的架构创建实体类 (Blogs.cs & Posts.cs) 和派生上下文 (EFGetStartedAspNetCoreNewDbContext.cs),上下文表示与数据库的会话,并允许查询和保存实体类的实例。命令自动生成如下实体类:

9b00fcbd68c8787c451c60404cc5a5d8.png

1.4 通过依赖关系注入注册上下文

在 Startup.cs 中注册并配置上下文。这里实现与上一篇一样。通过AddDbContext(...) 方法将EF上下文注册为服务。

1005ad50a3615e84e52e18ffe4f06f6e.png

1.5 创建控制器和视图 

创建BlogsController控制器,在Index方法中读出数据,在视图Blogs/index下显示。

d3c107016414416b4df0d25bdf44c173.png
ced7b9cee103ac2af89f273e3acc4bf0.png

在Blogs控制器的index中,通过EF查询出Blogs集合,通过View 重载方法返回一个集合对象 View(blogs), 在Blogs/index页,声明一个IList泛型对象,约定将自动把返回的数据映射到index页面的泛型对象上。如下所示:

9336ff38290b41f025ce26305bfcf801.png

参考文献:

官方资料:ASP.NET Core 现有数据库

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

96796c7f3aa065db19fc7acc5ff1d2e2.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值