Overview
EFCore是一个以对象映射器(O/RM)为核心的轻量级、可扩展的实体框架数据访问技术,目前支持Microsoft SQL Server、SQLite、Postgres(Npgsql)、InMeory等数据库技术
获取EntityFramework Core方法:通过Nuget package安装或使用命令安装SQLSERVER
Concepts
EntityState
跟EF6.X一样,这里也存在EntityState
成员名称 |
说明 |
Added |
对象为新对象,且已添加到对象上下文中,但尚未调用SavaChanges方法,在保存更改后,对象状态将更改为 Unchanged。 状态为 Added 的对象在 ObjectStateEntry 中没有原始值。 |
Deleted |
对象已从对象上下文中删除,在保存更改后,对象状态将更改为Detached |
Detached |
对象存在,但未被跟踪,在创建实体之后且添加到对象上下文之前,实体处于此状态。通过调用Detach方法从上下文中移除实体后,没有 ObjectStateEntry 实例与状态为 Detached 的对象关联 |
Modified |
对象上的一个标量属性已更改,但尚未调用SaveChanges方法。 在不带更改跟踪代理的 POCO 实体中,调用 DetectChanges 方法时,已修改属性的状态将更改为 Modified。 在保存更改后,对象状态将更改为 Unchanged。 |
UnChanged |
自对象附加到上下文中后,或自上次调用SaveChanges方法后,此对象尚未经过修改。 |
Context Scope(上下文作用域)
单个EF CORE应用程序能够利用多个Provider,例如同一个应用程序能够访问SQLServer数据库和SQLite数据库,通过每个上下文实例定义的Session严格使用单个Provider,所以可以创建一个上下文去访问SQLServer数据库,同时创建另一个实例上下文去访问SQLite数据库,但不能用创建的上下文同时去访问SQLserver和SQLite数据库。
SQL Server LocalDB
LocalDB是针对程序开发阶段使用的一个SQL Server Express轻量级版本的数据库引擎,因LocalDB在用户模式下启动、执行,所以没有复杂的配置。默认情况下LocalDB创建的”.mdf”文件在C:/Users/<user>目录下
在Asp.net Core中是通过ApplicationDbContext类负责连接数据库并将对象和数据记录进行映射,首先必须在Startup.cs文件中数据库上下文是在ConfigureServcies方法中庸Dependency Injection容器进行注册,温馨提示:要使用options.UseSqlServer()方法必须引用Microsoft.EntityFrameworkCore命名空间
在本地开发模式下会从Appsettings.json文件中获取链接字符串
- 填充数据库
新建一个类用于导入数据SeedData的新类,可以使用数据库上下文来探测某个表是否创建
逐个导入数据
之后再Startup.cs文件最后添加引用