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

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

二.使用Nuget添加EF的依赖

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

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

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

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

Install-Package Microsoft.EntityFrameworkCore.Tools

Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design

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

四.相关依赖添加成功后,就可以更具一个命令就可以从数据库生成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

官方文档

然后就可以开始使用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:使用的时候就不能直接去实例化了否则会报错找不到上下文对象

应该使用注入的方式去获取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

ef mysql db first_Net Core使用EF之DB First相关推荐

  1. ef mysql 插件_EF Core 插件 —— ToSql

    原标题:EF Core 插件 -- ToSql 背景 在使用Entity Framework Core进行开发时,若不使用Logger很难查看到一个查询的SQL语句,同时也有些开发者因为不了解EF C ...

  2. ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽

    原标题:EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽 DbContextPool 是 ASP.NET Core 2.1 引入的新特性,可以节省创建 DbContext ...

  3. ef mysql dbfirst,.NetCore教程之 EFCore連接Mysql DBFirst模式

    一:創建EF的類庫,同時將此項目設置為啟動項(為Scaffold-DbContext -tables指令使用),同時安裝2個包 ①Microsoft.EntityFrameworkCore.Tools ...

  4. mysql timestamp 并发_MySQL 实现 EF Code First TimeStamp/RowVersion 并发控制

    在将项目迁移到MySQL 5.6.10数据库上时,遇到和迁移到PostgreSQL数据库相同的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Serv ...

  5. ef mysql dbfirst_.NetCore教程之 EFCore连接Mysql DBFirst模式

    一:创建ef的类库,同时将此项目设置为启动项(为scaffold-dbcontext -tables指令使用),同时安装2个包 ①microsoft.entityframeworkcore.tools ...

  6. ef mysql code first_关于ef+codefirst+mysql(入门)

    ef+mssql详细是许多.net程序员的标配.作为一个程序员当然不能只会mssql这一个数据库,今天简单聊聊ef+mysql.推荐新人阅读. 1]首先创建一个mvc项目,如图: 创建完毕之后再nug ...

  7. .Net Core 使用EF Core codefirst模式

    .Net Core 使用EF Core codefirst模式 什么是codefirst模式 EF Core有两种数据库设计模式,DBfirst 数据库优先.Codefirst 代码优先. 1.我们一 ...

  8. ef mysql自动更新_EntityFrameworkCore使用Migrations自动更新数据库

    EntityFrameworkCore使用Migrations自动更新数据库 系统环境:Win10 IDE:VS2017 RC4 .netcore版本:1.1 一.新建ASP.NET Core Web ...

  9. mysql实体数据模型闪_visualstudio2017 +EF+Mysql生成实体数据模型闪退

    VisualStudio2017+EF+MySql正常运转,费了不少劲,踏过不少坑 1.安装 Connector/NET 8.0.13 地址:https://dev.mysql.com/downloa ...

最新文章

  1. 迷宫python_Python走迷宫,递归 - nixBlog
  2. C++horspool算法查找字符串是否包含子字符串(附完整源码)
  3. HTTP RTSP RTMP RTP 协议简说 流媒体学习(一)
  4. 精通Android3笔记--第十一章
  5. python怎么测试程序_python如何测试程序
  6. 关于事件委托的整理 ,另附bind,live,delegate,on区别
  7. vuex--mutation,action个人理解
  8. 131. 分割回文串
  9. keil c语言中断怎么写,如何利用keil C实现单片机中断功能
  10. Linux发行版列表
  11. Python好酷|抓包神器 mitmproxy
  12. ehcache使用java_Java分布式缓存框架Ehcache 使用(一)
  13. python股票量化交易(10)---使用机器学习算法预测股票涨跌
  14. 360浏览器打不开html5文件,电脑360浏览器打不开网页原因-浏览器打不开解决方法 - 系统家园...
  15. 潮流计算程序————支路功率计算与输出程序
  16. 渗透测试(面试)如何获取一个网站的真实ip
  17. Python -- Matplotlib:设置画布大小和子图个数
  18. Android之人脸识别
  19. 微指创始人任春雷携好机友踏入微商领域
  20. 2021年河南高考--各高校在河南录取分数线预测(本科一批——文科)

热门文章

  1. debian8.8安装谷歌浏览器
  2. mybatis对java自定义注解的使用——入门篇
  3. servlet的由来
  4. django使用LDAP验证
  5. 电力自动化及继电保护实验室规章制度
  6. C#常用的文件操作 (转)
  7. Android模拟器访问本机服务IP地址
  8. [转载] java8 lambda表达式 List转为Map
  9. java 数字字母进位_使用带有进位的8085微处理器将两个8位数字相乘
  10. treeset java_Java TreeSet add()方法与示例