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
不僅擁有從資料庫中查詢出來的實體引用,而且擁有實體的狀態和維護實體屬性的變化修改,這個特徵就是變化跟蹤(Change Tracking
)
實體狀態從Unchanged
狀態變到Modified
狀態是由上下文context自動處理的,其他所有的改變必須明確地呼叫DbContext
和DbSet
中的方法來完成
下面的圖示說明實體上的哪些操作改變實體的狀態,反過來影響資料庫的操作
由上圖所示,context中新的實體有Added
實體狀態,因此上下文將執行插入資料庫命令,同樣的,當你通過L2E查詢一個存在的實體,它將是Unchanged
實體狀態,這是因為你剛剛查詢實體且沒有在該實體上執行任何操作。當你更改已存在實體的值時,它的狀態變為Modified
實體狀態,在SaveChanges
時,將執行更新操作。從contxt上下文刪除實體,它變為Deleted
狀態,將執行刪除操作。
因此,實體上的操作將改變實體的狀態,Context
通過實體的狀態建立和執行資料庫命令。
相關文章
- 【Spring】Bean的LifeCycle(生命週期)SpringBean
- Android 程式生命週期 Process LifecycleAndroid
- 學習vue生命週期Vue
- 深入學習Activity生命週期
- vue生命週期整理學習Vue
- Android生命週期元件Lifecycle使用詳解Android元件
- Angular學習(二):元件-生命週期Angular元件
- React生命週期學習筆記React筆記
- Tomcat原始碼分析 (三)----- 生命週期機制 LifecycleTomcat原始碼
- Vue學習(三)生命週期函式Vue函式
- ReactJS前端學習-元件生命週期ReactJS前端元件
- Mybatis學習-配置、作用域和生命週期MyBatis
- Vue原始碼學習(八):生命週期呼叫Vue原始碼
- Apple Watch學習之路 生命週期研究APP
- 軟體工程生命週期軟體工程
- 【2】軟體生命週期
- Entity Framework 4 in Action讀書筆記——第六章:理解實體的生命週期Framework筆記
- 實測Vue生命週期Vue
- Angular生命週期實踐Angular
- Vue學習筆記(2)—— Vue的生命週期Vue筆記
- Java開發學習(五)----bean的生命週期JavaBean
- ReactNative學習筆記五之生命週期React筆記
- 軟體測試生命週期
- 軟體工程----生命週期模型軟體工程模型
- 生命週期
- Android官方架構元件Lifecycle:生命週期元件詳解&原理分析Android架構元件
- react-native學習筆記之 生命週期React筆記
- Android學習筆記04——Activity的生命週期Android筆記
- Maven實戰:Maven生命週期Maven
- 軟體測試--軟體生命週期
- Entity Framework Tutorial Basics(10):Entity LifecycleFramework
- 開發方法---軟體生命週期
- 記憶體頁生命週期下降記憶體
- View生命週期與Activity生命週期的關係View
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Fragment生命週期Fragment