ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库
支持的数据库:可以查看官方网站
https://docs.microsoft.com/en-us/ef/core/providers/
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_02
安装了VS2017后会安装了LocalDB,验证localDB
在CMD输入:sqllocaldb
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_03
现实当前存在的实例
sqllocaldb info
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_04
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_字符串_05

使用VS也可以查看
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_06

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_字符串_07
appsettings.json配置数据库链接字符串
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_08
把localDB的链接字符串复制到这里
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_字符串_09
需要有一个类继承DBContext这个类,有一些属性DbSet,每一个DbSet和数据中的一个表对应
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_10

如果使用EFCore

默认按装了里面应该默认安装了EFCore这里搜一下
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_11
这里已经包含了这么多了,如果使用的是Sql server的默认基本就足够了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_12
测试命令,dotnet ef。说明ef没问题
dotnet ef就是efCore的命令行工具
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_13
新建文件夹,并新建类DataContext
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_14
继承这个DbContext。命名空间在上面引入
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_15
prop可能是Resharper的快捷键,快速建立属性
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_16
Resharper自动生成的属性名,通常会加上s表示复数的形式
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_17
增加构造函数,配置链接到哪个数据库
ctor快捷键
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_字符串_18
把配置信息从构造函数传进来
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_19
options的配置信息传进来之后呢,要把它传给他的父类。然后这DataContext的功能才完整了。
父类会处理这些配置信息,连接适当的数据库
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_20

要使用这个DbContext,依赖注入的方式
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_21
它有个overload方法可以配置他的参数,写一个栏目大表达式,这个options有很多的方法,
这里使用的方法是志明数据库的类型
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_22
useSqlServer有个必填的参数就是数据库的链接字符串
需要回去appSetting.json里面的配置信息
startUp写个构造函数,可以注入一些服务
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_23
注入IConfiguration,
这里又用到了Resharper,添加一个field
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_24
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_25
这个Configuration是在什么时候注册完成的呢?是在这里的CreateDefaultBuilder方法里就已经注册好了,所以在StartUp里面可以使用这个服务
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_26
有层级关系,曾与层之间应冒号;
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_27
把链接字符串春进去就可以了
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_28
然后改一下数据库链接字符串的 数据库名称:
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_29
这个表示使用windows验证
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_30
另外一种获取链接字符串的方法GetConnectionString会去找ConnectionStrings下面的值

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_31

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_32
不用创建变量直接回去也是可以的ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_字符串_33

迁移

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_34

15分32秒





 

如果使用VS2017 就在包管理工具的窗体内
如果使用cli 就在cmd窗体

迁移命令

迁移如要涉及到这两个命令
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_35
执行迁移的命令
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_36
创建了Migrations文件夹,里面有两个文件,带事件戳的是迁移文件,SnapShot是快照文件,快照文件不要手动去改,迁移文件在有的情况下可以稍做改动
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_37
Updaste-Database -Verbose
-Verbose:查看执行的明细过程
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_38
表就创建好 了。一个是Students表,一个是数据迁移的表
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_39
HomeController对接口有依赖,对具体的实现类没有依赖
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_40

修改为读取数据库

新建类文件EFCoreRepository
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_41
注入DataContext
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_42
EF修改原来的代码
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_43
修改为EFCoreRepository
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_44
这里因为使用了DBContext,它不是线程安全的,AddSingleton肯定会发生线程的问题修改为Scoped模式
每次http请求,生成一个新的实例。每次Http请求,可以保证它是在一个线程里,或者叫做一个逻辑线程内
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_45
清理,没用的代码
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_46
app.Run的代码删掉
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_47
配置文件里清楚垃圾代码
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_sql_48
运行程序报错
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_49
这里去掉
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_配置信息_50
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_51
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_数据库_52
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core_asp.net core 2.2_53