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生命週期元件Lifecycle使用詳解Android元件
- 學習vue生命週期Vue
- Tomcat原始碼分析 (三)----- 生命週期機制 LifecycleTomcat原始碼
- vue生命週期整理學習Vue
- React生命週期學習筆記React筆記
- Angular學習(二):元件-生命週期Angular元件
- ReactJS前端學習-元件生命週期ReactJS前端元件
- Entity Framework 4 in Action讀書筆記——第六章:理解實體的生命週期Framework筆記
- Vue學習(三)生命週期函式Vue函式
- Android官方架構元件Lifecycle:生命週期元件詳解&原理分析Android架構元件
- 如何繫結頁面生命週期(二)-基於Android Architecture Components的Lifecycle實現Android
- Vue原始碼學習(八):生命週期呼叫Vue原始碼
- rust學習十一.3、生命週期標記Rust
- Mybatis學習-配置、作用域和生命週期MyBatis
- 【2】軟體生命週期
- 軟體工程生命週期軟體工程
- 實測Vue生命週期Vue
- Angular生命週期實踐Angular
- Vue學習筆記(2)—— Vue的生命週期Vue筆記
- Java開發學習(五)----bean的生命週期JavaBean
- 軟體測試生命週期
- 生命週期
- 軟體測試--軟體生命週期
- 開發方法---軟體生命週期
- View生命週期與Activity生命週期的關係View
- SAP UI5 檢視控制器 View Controller 的生命週期方法 - Lifecycle methodsUIViewController
- angular4學習記錄 — 元件通訊、生命週期Angular元件
- 用Flutter做APP學習心得:Flutter widget的生命週期FlutterAPP
- flutter學習日記(三)————Flutter的生命週期和路由Flutter路由
- vue - 生命週期第二次學習與理解Vue
- vue - 生命週期Vue
- Fragment生命週期Fragment
- vue生命週期Vue
- spring生命週期Spring
- ubuntu生命週期Ubuntu
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session