ef mysql db first_Net Core使用EF之DB First

一.新建一个.net core的MVC项目

71d39159f64cdfc8b2c608160d2f94ae.png

新建好项目后,不能像以前一样直接在新建项中添加ef了,需要用命令在添加ef的依赖

二.使用Nuget添加EF的依赖

输入命令:  Install-Package Microsoft.EntityFrameworkCore.SqlServer

96c0344b60dbf2539176da90c7e87258.png

安装成功后就可以在依赖项中看到

050199757bc297994577dbc5052ef2bf.png

注意执行命令的项目你可能需要选择一下

三.如果是使用db first,需要根据数据库生成model,就还需要使用命令添加两个依赖

Install-Package Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

安装成功后就可以在依赖项中看到

190542e40a010685d9f230768d28ba24.png

四.相关依赖添加成功后,就可以更具一个命令就可以从数据库生成model了

命令:    Scaffold-DbContext "Server=.;Database=Food;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

-OutputDir Models的意思是把生成的实体和上下文都输出到Models这个文件夹如果不需要这样直接输出到当前类库中不接即可

注意:有可能执行这个命令会报错:

1:执行这一步的时候出现了点问题 ,因为系统是win7,powershell版本太低了,不支持这个命令,需要安装

3.0以上的powershell版本才行

2: Could not load assembly 'DAL'. Ensure it is referenced by the startup project 'xxxx'.

是因为主项目没有添加到这个DAL层的引用,添加了就行了,所以估计执行这个命令会使用到启动项目的一些东西

3:Your startup project 'xxxxx' doesn't reference Microsoft.EntityFrameworkCore.Design.This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.

他是说你启动项目没有这个依赖,在启动项目里边执行一下这个两个命令就好了

Install-Package Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

好像执行执行那个.Tools也可以,我就奇怪了nuget执行的明明不是启动项目为什么启动项目中还要添加这个依赖呢,

只在启动项目添加这个依赖行不行呢

如果model已经生成过了,想全部覆盖的话,可以在后面加一个-force命令:

Scaffold-DbContext "Server=.;Database=Food;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -force

更新某个表:后面加-tables 表名

Scaffold-DbContext "Server=.;Database=Food;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -tables Article

但是更新某个表有坑啊,如果覆盖了,那个表不会生成导航属性,而且那个山下文对象也只有那个表的内容了....暂时没有找到更好的办法...

单独更新拷贝过来,或者全部更新,或者直接写手吧,比如添加了一个字段什么的

添加成功后在models可以看到, 生成了上下文对象与和表对应的model

043702b7a0f0f82cf9e5bef6d50275f4.png

官方文档

然后就可以开始使用EF了public IActionResult Index()

{

FoodContext fc = new FoodContext();

List ptlist = fc.ProType.ToList();

ViewBag.ptlist = ptlist;

return View();

}

五.使用依赖注入来装载EF的上下文对象

.net core中用了不少的依赖注入,官方文档中也推荐使用

1:删除方法protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)

{

//#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.

optionsBuilder.UseSqlServer(@"Server=.;Database=Food;Trusted_Connection=True;");

}

2:添加方法public FoodContext(DbContextOptions options)

: base(options)

{

}

添加的是一个构造函数用于构造函数注入(这个方法在新版的时候会自动加入)

3:在startup.cs的ConfigureServices方法中添加依赖注入public void ConfigureServices(IServiceCollection services)

{

// Add framework services.

services.AddMvc();

services.AddDbContext(option => {

option.UseSqlServer("Data Source =.; Initial Catalog = EFCore_dbfirst; User ID = sa; Password = sa.123");

});

}

注:usersqlserver是一个扩展方法,需要添加ef core的引用using Microsoft.EntityFrameworkCore;

连接字符串写入配置文件

4:使用的时候就不能直接去实例化了否则会报错找不到上下文对象

6a97a7819aaa3de840a9acab2223662d.png

应该使用注入的方式去获取ef对象,例如构造函数注入private CNBlog_ServerContext ef;

public ArticleDAL(CNBlog_ServerContext context) //通过依赖注入得到实例

{

ef = context;

}

微软官方文档:

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db

欢迎加群讨论技术,群号:677373950

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

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

相关文章

kali装电脑_教你Kali Linux怎么安装Nessus软件

Nessus是系统漏洞扫描与分析软件,但Nessus在Kali Linux上的安装可不简单,没有提供一个图形化的安装借口,下面小编就给大家介绍下如何在Kali Linux上安装Nessus。用w3m命令在终端下打开http://www.tenable.com/products/nessus/select-your-op…

vue中src文件夹下各文件_Win10下与虚拟机中的linux共享文件夹

Win10主机和Vmware linux共享文件夹1.首先确保虚拟机中的linux能ping通主机,证明虚拟机是可以访问到的主机的(这个不会可百度)2.右击你想要共享的文件夹选择属性,点击共享,同时加入一个everyone用户,权限为读取/写入3.然后点击高级…

java settings文件夹_windows下打开.m2文件夹,没有找到setting.xml

Frank作家2018-03-15 10:07已采纳那就自己创建一个手动创建本地仓库的存放路径,例如:D:\Java\m2\repository;在windows的环境变量中增加了新的用户变量M2_REPO,其对应的值为D:\Java\m2\repository(Maven仓库的本地存放路径)&#…

java 播放.pcm文件_如何在浏览器中播放pcm音频

本文记录一点工作经历,探讨音频文件的格式更多访问我的博客前言最近在整理音视频编程的知识,回忆起半年多,有一次需求是在后台播放某来源的 pcm 文件,当时处理方法用了点技巧,记录下来背景:业务需求&#x…

mysql 完全备份恢复吗_mysql完全备份与恢复

备份的重要性:在生产环境中我们数据库可能会遭遇各种各样的不测从而导致数据丢失, 大概分为以下几种.硬件故障软件故障自然灾害误操作 (占比最大)备份类型:物理和逻辑角度:物理备份---指对数据库操作系统的物理文件的备份逻辑备份---指对数据…

scala与java的区别_Scala学习笔记及与Java不同之处总结

Scala与Java具有许多相似之处,但又有许多不同。这里主要从一个Java开发人员的角度,总结在使用Scala的过程中所面临的一些思维转变。这里只是总结了部分两种语言在开发过程中的不同,以后会陆续更新一些切换后在开发过程中值得注意的地方。下面…

centos6.5搭建mysql主从_mysql 主从配置,主-》windows,从-》centos6.5

1.虚拟机配置的主从关系。win7 ip地址192.168.52.102,虚拟机ip 192.168.184.128。docs进入主服务器(master)mysql目录下,添加用户,然后执行mysql>create user dba192.168.184.128 identified by 123456 ,然后grant replication…

java 定时关机_「window定时关机命令」电脑定时关机命令,这个方法适用于win7及以下系统 - seo实验室...

window定时关机命令上班族朋友们有没有碰到一种情况:临时需要外出,又不确定是否还要回来,因此办公室的电脑关与不关,小小的纠结了一下。以下方法或者可以帮你化解这个小纠结。定时关机且可以回来时取消(本法适用于 win7及以下系统…

彩票模拟选号程序java_java课程设计-彩票购买抽奖程序

彩票抽奖程序[TOC]###可实现功能:允许注册用户,用户信息包括用户id,用户名,密码,账户金额,电话号码等属性。允许注册用户购买彩票:手动选号、随机选号,并允许设置投注数。抽奖功能:要…

java给你的初步印象_Java之初印象

Java语言的跨平台性:Java语言的编程过程:只要实现了特定平台下的解释器程序(JVM),Java字节码就能通过解释器程序在该平台下运行,这是java跨平台的根本,当前并不是在所有平台下都有相应的Java解释器程序,这也是Java并不是在所有平台下都能运行的原因,它只能在实现了Java解释器程…

php js跨域上传文件,Jquery实现跨域异步上传文件步骤详解

这次给大家带来Jquery实现跨域异步上传文件步骤详解,Jquery实现跨域异步上传文件的注意事项有哪些,下面就是实战案例,一起来看一下。先说明白这个跨域异步上传功能我们借助了Jquery.form插件,它在异步表单方面很有成效&#xff0c…

php js offset,获取元素的偏移量offset实例详解

问题:如果获取元素距离文档顶部的距离?[javascript] view plain copyvar rect$(#elem)[0].getBoundingClientRect();//获取元素距离文档顶部的距离var toprect.top(window.pageYOffset||document.documentElement.scrollTop)-(document.documentElement.clientTop|…

php 删除上传文件,php实现文件上传、下载和删除的方法

这篇文章主要为大家详细介绍了php文件上传、下载和删除示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下php文件上传、下载和删除示例大体思路如下,具体内容如下一.文件上传1.把上传文件的区域做出来p12.把显示文件的区域做出来p23.提交表单&#…

软件工程详细设计说明书_软件工程导论知识点梳理之简答题

1. 软件危机的表现形式对软件开发成本和进度估计不准确已完成的软件不符合用户需求软件产品质量差,可靠性得不到保证软件产品可维护性差软件成本在计算机总成本中的比例逐渐变大软件开发生产率提高速度比不上计算机应用速度2. 产生软件危机的原因(1)软件是计算机系统…

php模板意思,php中的 是什么意思

php调用类的内部静态成员,或者是类之间调用就要用两个冒号(::)。说明:“::”符号可以认为是与C语言中的“.”相似的,而它更像C中(Perl)的::类范围操作符。示例:{$0;(){//}(){();$;}};/*C语言中的*/a::b::c();//C中的函数$a::b::c;…

程序员为什么老得快_这段 Python 代码让程序员赚 300W,公司已确认!网友:神操作!...

点击上方“Python大本营”,选择“置顶公众号”python大本营 IT人的职业提升平台Python到底还能给人多少惊喜?笔者最近看到了这两天关于Python最热门的话题,关于《地产大佬潘石屹学Python的原因》,结果被这个回答惊到了&#xff1…

Mercedes-Benz won’t start| Step by Step Troubleshooting Guide

Mercedes won’t start or turn over? Are you experiencing Mercedes-Benz no start problems? Key won’t turn at all? Engine turning over but the car will not start? Maybe it finally starts, runs for a few seconds and then dies. These are common Mercedes-…

php如何设置页面布局,excel页面布局怎么调整

excel页面布局调整的方法:首先点击菜单的页面布局,选择纸张大小;然后点击“纸张方向”,单击以选择横向或者纵向;最后点击“页边距”即可。点击菜单——页面布局,工具栏将出现页面布局的许多项目&#xff0c…

无法获取未定义或 null 引用的属性“value”_SpringBoot之Spring@Value属性注入使用详解

在使用Spring框架的项目中,Value是使用比较频繁的注解之一,它的作用是将配置文件中key对应的值赋值给它标注的属性。在日常使用中我们常用的功能都比较简单,本篇文章系统的带大家来了解一下Value的使用方法。Value注入支持形式Value属性注入功…

0x11 栈

【例题】Push,Pop,GetMin 手写一个栈 1 #include <iostream>2 #include <cstdio>3 #include <cmath>4 #include <cstring>5 #include <algorithm>6 #include <queue>7 using namespace std;8 const int maxn1000000;9 int stack[maxn], m[…