实体生命周期(EF基础系列8)

在我们进行增删查改操作之前,相当重要去理解实体的生命周期,它是怎么被EF操作的。

在实体的生命周期过程中,每个实体基于上下文的操作都会有一个实体状态,实体状态是一个枚举类型的值:System.Data.Entity.EntityState,包含下面的值:

1.Added

2.Deleted

3.Modified

4.Unchanged

5.Detached

数据上下文不仅包含所有从数据库中检索的对象的引用,并且它有这个实体对象的实体状态,维护修改实体的属性,这个特性叫做更改跟踪。

实体状态从“Unchaged”到“Modified”的改变是由数据上下文自动处理的,所以其他状态的改变,必须要使用DbContext和DbSet合适的方法.

下面的图表,列出了,改变实体状态的操作,反过来是怎么影响数据库的操作的。

一个新的实体,保存的时候,生成的是Insert命令;

查询一个实体,实体的状态是Unchanged;

修改实体之后,再保存,就是Update;

删除就是Delete

时间: 2024-10-13 20:46:55

实体生命周期(EF基础系列8)的相关文章

EF中的实体类型(EF基础系列篇6)

EF中有两种类型的实体:POCO Entity和dynamic proxy entity. POCO Entity (Plain Old CLR Object) POCO class是一个类,它不依赖任何.NET framework的基类,它就像任何其他的普通类一样,这也是为什么被称之为“Plain Old CLR Object”的原因: 这些由实体数据模型生成的POCO实体支持大多数的增删查改的功能.下面是一个Studnet POCO实体: public class Student { pub

创建实体数据模型(EF基础系列5)

现在我要来为上面一节末尾给出的数据库(SchoolDB)创建实体数据模型: SchoolDB数据库的脚本我已经写好了,如下: USE master GO IF EXISTS(SELECT * FROM sys.sysdatabases WHERE name='SchoolDB') DROP DATABASE SchoolDB; GO CREATE DATABASE SchoolDB GO USE SchoolDB; GO --创建Standard表 IF EXISTS (SELECT * FRO

EntityFramework 学习 一 Entity Lifecycle 实体生命周期

当我们执行CRUD(Create,Read,Update,Delete)操作之前,最重要的是搞明白实体的生命周期和EntityFrameword怎么管理实体 在一个实体的生命周期里,每个实体都有一个实体状态(基于上下文DbContext执行的操作),实体状态是一个枚举类型System.Data.Entity.EntityState 包含以下值: 1.Added 2.Deleted 3.Modified 4.Unchanged 5.Detached 这个上下文Context不仅拥有从数据库中查询出

EF中的开放式并发(EF基础系列)

好久没更新EF这个系列了,现在又重新开始. 这次学习,开放式并发.首先拿出数据库脚本: 说明一下,这个数据库脚本是之前的章节中稍作修改的: USE [SchoolDB] GO /****** Object: Table [dbo].[Student] Script Date: 11/30/2015 21:42:07 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Student]( [Stu

vue生命周期的基础部分

Vue实例从创建到销毁的过程,就是生命周期. Vue的生命周期包括:开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程. 在Vue的整个生命周期中,提供了一系列的事件,可以注册JavaScript方法,达到控制整个过程的目的,在这些JavaScript方法中的this直接指向的是vue的实例. 在Vue的整个生命周期中,实例可以调用一些生命周期钩子,这提供了执行自定义逻辑的机会. Vue提供的生命周期钩子如下: ① beforeCreate 在实例初始化之后,数据观测

实体之间的关系(EF基础系列篇7)

EF实体之间的关系分为: 1.一对一: 2.一对多: 3.多对多: 一对一关系: Student和StudentAddress之间: public partial class Student { public int StudentID { get; set; } public string StudentName { get; set; } public Nullable<int> StandardID { get; set; } public string RowVersion { get

安装Entity Framework(EF基础系列篇4)

Entity Framework 5.0 API是分布在两个地方:NuGet和.NET Framework中,这个.NET framework 4.0/4.5包含EF核心的API,然而通过NuGet包获取的EntityFramework.dll包含EF 5.0特别的特性:EF6.0中不是分开的: 在这个基础的系列课程中,我将会使用EF 6.0,这个最新的EF版本来学习, 学习EF,首先要安装下面的工具: .NET Framework 4.5 Visual Studio 2012/2013/201

EF是啥?(EF基础系列)

EF产生的背景: 编写ADO.NET访问数据的代码,是沉闷而枯燥的,所以微软提供了一个对象关系映射框架(我们称之为EF),通过EF可以自动帮助我们的程序生成相关数据库的活动. EF的定义: EF是一个对象关系映射的框架,它保证程序员把相关的数据作为特别的领域对象,减少了程序员编写大量的访问数据库的代码.开发人员,使用LINQ来查询,检索,操作数据为强类型对象来处理.EF框架提供了更改跟踪,身份识别,懒加载,和查询转换,所以开发人员可以专注于他们的程序中的逻辑代码,而不是数据访问基础. EF的三个

EF开发模式(EF基础系列篇9)

EF有三种开发的模式: 1.Code First 2.Model First 3.Database First Code First:在Code First方法中,你完全避免了直接操作实体设计器(EDMX).我们开始自己写领域类,用这些领域类来生成数据库. Model First:在Model First中,你直接通过实体数据模型(EDMX)创建实体,关系,层级继承,然后根据你的Model生成数据库: Database First:根据已经存在的数据库,然后添加实体数据模型,从数据库中创建生成了