idea数据库反向生成实体类_asp.net core 系列 21 EF现有数据库进行反向工程

f966feaa6568c9aa554346a54d2fd66c.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),上下文表示与数据库的会话,并允许查询和保存实体类的实例。命令自动生成如下实体类:

e452eae71ccd847765ae1027b64a35fa.png

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

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

de18cee9df8dd6f5661d6af663fa4d4f.png

1.5 创建控制器和视图 

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

c6d2fb67f9fca271c84f201fcd849f04.png
9b607fca76e84e053f21729e8186175e.png

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

e36ce415157892ff8996d9728a43f618.png

参考文献:

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

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

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

ec160d1f56690365f7607771435789d1.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无线网络虚拟服务器,无线虚拟局域网

无线虚拟局域网是指在无线局域网的基础上,采用网络管理软件构建的可跨越不同网段、不同网络的端到端的逻辑网络。无线局域网就是一种无线数据网络,它是以无线方式构建的局域网WLAN,或者说,不用线缆将设备相连的局域网络。无线虚拟…

名爵如何解除限速_价格不高却乐趣十足,全新一代名爵6有多大惊喜

紧凑型轿车市场一直是各大车企的兵家必争,激烈的市场竞争也促成了很多紧凑型级别的细分市场,而紧凑型运动轿车则一直是消费者最为关注的一类产品。全新一代名爵6究竟有着什么表现,它能否在激烈竞争中取胜,运动调校上又有何等功底&…

管理服务器文件绿色版本,Services.msc服务器文件官方版

Services.msc是一款能够让我们对Windows系统服务策略进行快速管理和处理的工具,主要用于是适应于启动、终止并设置Windows服务的管理策略,该文件使用也是比较简单,软件简单又实用,让我们对相关进行快速管理,有需要的朋…

vue watch 修改滚动条_Vue 里的 computed 和 watch 的区别

computed computed 是计算属性,它会根据你所依赖的数据动态显示新的计算结果计算属性将被加入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例通过计算出来的属性不需要调用直接可以在 DOM 里使用基础例子var vm new Vue({el: #app,dat…

e2140服务器性能,4000 还是E2140?两大人气CPU对决

4000 还是E2140?两大人气CPU对决互联网 发布时间:2009-04-21 01:31:37 作者:佚名 我要评论今夏攒机,双核处理器无疑是网友们的第一选择。由于Intel和AMD的大力推广,双核处理器的价格目前已经跌到了一个大众消费…

12306能删候补订单记录_「实用」官方“捡漏”神器来了!12306铁路候补购票服务正式上线!...

准备购买火车票的小伙伴注意啦!中国铁路总公司说,5月22日起,铁路12306网站(含手机客户端)在前期试点的基础上,将铁路候补购票服务扩大到所有旅客列车。候补购票如何操作?怎么提交订单?如何添加“车次席别”…

cad指示箭头快捷键命令_cad中箭头怎么画_cad箭头画法命令 - 学无忧

在cad制图中,我们经常会对图形进标注和注明,这里就需要一些箭头进行指向和声明。而在cad中插入箭头的方法并不是那么简单,不是直接插入就可以的。这里就给大家讲解在cad中插入各种箭头的方法,cad箭头各种画法如下:一、…

联想平板刷机机器人_消费终端年出货量破1.2亿,杨元庆:联想是智能化转型的赋能者...

“科技是我们‘在危机中育先机、于变局中开新局’可以依赖的力量。联想一直在用实际行动为推动‘智慧经济’的增长,为构建“双循环”的新发展格局做贡献。”文丨《中国企业家》记者 刘哲铭编辑丨李薇图片来源丨中企图库一座青砖黑瓦的古城里,绿水萦回&am…

查询已有链表的hashmap_面试官再问你 HashMap 底层原理,就把这篇文章甩给他看...

前言HashMap 源码和底层原理在现在面试中是必问的。因此,我们非常有必要搞清楚它的底层实现和思想,才能在面试中对答如流,跟面试官大战三百回合。文章较长,介绍了很多原理性的问题,希望对你有所帮助~目录本篇文章主要包…

js 获取url问号前_收下这波 JS 技巧,从此少加班

各种业务开发都离不开对数据的处理,然而遇到的很多数据都是不好处理的。这个时候就需要寻求搜索引擎的帮助。这种方法效率是非常低下的,而且根据作者的个性不能保证其对自己的口味。因此这篇文字包含了一份JS 常用业务函数手册,例如时间格式的…

底层实现_Java AOP的底层实现原理

AOP用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等。AOP实现的关键,在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代…

lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?

相信不少同学都在初学计算机之时,都被ASCII,Unicode和UFT-8等字符编码格式 搞得焦头烂额,这玩意儿到底是啥,区别是啥,为啥有这么多?反正我刚学的时候纯粹是囫囵吞枣,为了考试潦草背一背&#xf…

git配置用户信息_git系列教程(4)-单用户配置

一般新手都会使用一个用户,要么是github,要么是gitee本地配置上个文档已经讲过本地配置,在这里就不赘述了连接github或者gitee生成ssh公钥ssh-keygen -t rsa -C "emailexample.com" 三次会车即可生成ssh key找id_rsa.pub文件mac或…

32 引脚_函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频方波

void Time0_serve(void ) interrupt 1 using 1 {TH0(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法sound!sound; //将P3.7引脚取反,输出音频方波}/************************…

matlab 功率谱密度 汉宁窗_信号系统的一些基本概念

泄露截断会使谱分析精度受到影响。如果时域信号是周期性的,而截断又按整周期取数,信号截断不会产生问题,因为每周期信号都能代表整个周期信号变化情况。若不是整周期截取数据,则截断将使信号波形两端产生突变,所截取的…

拟真机器人拯救者怎么来_笔点聊科技 篇九:3499起、卷土重来?理性聊聊刚发布的联想拯救者手机Pro...

笔点聊科技 篇九:3499起、卷土重来?理性聊聊刚发布的联想拯救者手机Pro2020-07-23 10:44:270点赞0收藏0评论创作立场声明:想让消费者接受品牌,真金白银买回家还感觉良好,继而产生源源不断的品牌口碑,在强者…

重定向地址_JavaWeb - Servlet:重定向和转发,状态管理

Servlet JDBC 应用在 Servlet 中可以使用 JDBC 技术访问数据库,常见功能如下:查询 DB 数据,然后生成显示页面,例如:列表显示功能。接收请求参数,然后对 DB 操作,例如:注册、登录、修…

华为双前置摄像头_国产手机集体爱上“双打孔屏”,前置双摄像头将成2020年标配?...

今年2月21日,三星S10采用了前置双摄像头的配置,而且是打孔屏,两颗摄像头分别是1000万像素的双核对焦主摄,以及800万像素的景深副摄,不俗的硬件辅以算法虚化,在当时拿下了Dxomark前摄第一的宝座。即便是10个…

python对文件的_python 对文件操作

#!/usr/bin/env python#-*- coding:utf-8 -*-defFind(class_name):class_list[]tagFalsewith open(‘data‘, ‘r‘, encoding‘utf8‘) as f:for line inf:if line.strip() ‘班级:{0}班‘.format(class_name.strip()):class_list.append(line)tagTruecontinueif …

摸底谷歌Gemini:CMU全面测评,Gemini Pro不敌GPT 3.5 Turbo

谷歌的 Gemini 到底几斤几两?和 OpenAI 的 GPT 模型相比表现如何?CMU 这篇论文测明白了。 前段时间,谷歌发布了对标 OpenAI GPT 模型的竞品 ——Gemini。这个大模型共有三个版本 ——Ultra(能力最强)、Pro 和 Nano。研…