
- 實體框架教程
- 實體框架 - 首頁
- 實體框架 - 概述
- 實體框架 - 架構
- 實體框架 - 環境設定
- 實體框架 - 資料庫設定
- 實體框架 - 資料模型
- 實體框架 - DbContext
- 實體框架 - 資料型別
- 實體框架 - 關係
- 實體框架 - 生命週期
- 實體框架 - 程式碼優先方法
- 實體框架 - 模型優先方法
- 實體框架 - 資料庫優先方法
- 實體框架 - 開發方法
- 實體框架 - 資料庫操作
- 實體框架 - 併發
- 實體框架 - 事務
- 實體框架 - 檢視
- 實體框架 - 索引
- 實體框架 - 儲存過程
- 實體框架 - 離線實體
- 實體框架 - 表值函式
- 實體框架 - 原生SQL
- 實體框架 - 列舉支援
- 實體框架 - 非同步查詢
- 實體框架 - 持久化
- 實體框架 - 投影查詢
- 實體框架 - 命令日誌
- 實體框架 - 命令攔截
- 實體框架 - 空間資料型別
- 實體框架 - 繼承
- 實體框架 - 遷移
- 實體框架 - 渴望載入
- 實體框架 - 延遲載入
- 實體框架 - 顯式載入
- 實體框架 - 驗證
- 實體框架 - 跟蹤更改
- 實體框架 - 彩色實體 (Colored Entities - 此處翻譯可能需要根據上下文調整,例如"帶顏色的實體"或更具體的描述)
- 實體框架 - 程式碼優先方法
- 實體框架 - 第一個示例
- 實體框架 - 資料註解
- 實體框架 - Fluent API
- 實體框架 - 資料庫填充
- 實體框架 - 程式碼優先遷移
- 實體框架 - 多個DbContext
- 實體框架 - 巢狀實體型別
- 實體框架資源
- 實體框架 - 快速指南
- 實體框架 - 有用資源
- 實體框架 - 討論
實體框架 - 驗證
本章我們將學習如何在 ADO.NET Entity Framework 中使用驗證技術來驗證模型資料。實體框架提供了多種驗證功能,可以實現到使用者介面中進行客戶端驗證,也可以用於伺服器端驗證。
在實體框架中,資料驗證是應用程式中捕獲不良資料解決方案的一部分。
實體框架預設情況下會在將所有資料寫入資料庫之前對其進行驗證,使用各種資料驗證方法。
但是,實體框架在使用者介面資料驗證之後。因此,在這種情況下,需要實體驗證來處理 EF 丟擲的任何異常並顯示通用訊息。
有一些資料驗證技術可以改進錯誤檢查以及如何將錯誤訊息傳遞迴使用者。
DbContext 有一個可重寫的方法,稱為 ValidateEntity。當您呼叫 SaveChanges 時,實體框架將為其狀態不是 Unchanged 的快取中的每個實體呼叫此方法。您可以像以下 Student 實體示例中所示那樣直接在此處放置驗證邏輯。
public partial class UniContextEntities : DbContext { protected override System.Data.Entity.Validation .DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, System.Collections.Generic.IDictionary<object, object> items) { if (entityEntry.Entity is Student) { if (entityEntry.CurrentValues.GetValue<string>("FirstMidName") == "") { var list = new List<System.Data.Entity .Validation.DbValidationError>(); list.Add(new System.Data.Entity.Validation .DbValidationError("FirstMidName", "FirstMidName is required")); return new System.Data.Entity.Validation .DbEntityValidationResult(entityEntry, list); } } if (entityEntry.CurrentValues.GetValue<string>("LastName") == "") { var list = new List<System.Data.Entity .Validation.DbValidationError>(); list.Add(new System.Data.Entity.Validation .DbValidationError("LastName", "LastName is required")); return new System.Data.Entity.Validation .DbEntityValidationResult(entityEntry, list); } return base.ValidateEntity(entityEntry, items); } }
在上面的 ValidateEntity 方法中,檢查 Student 實體的 FirstMidName 和 LastName 屬性,如果這些屬性中的任何一個為空字串,則將返回錯誤訊息。
讓我們來看一個簡單的示例,其中建立了一個新的學生,但學生姓名 FirstMidName 為空字串,如下面的程式碼所示。
class Program { static void Main(string[] args) { using (var context = new UniContextEntities()) { Console.WriteLine("Adding new Student to the database"); Console.WriteLine(); try { context.Students.Add(new Student() { FirstMidName = "", LastName = "Upston" }); context.SaveChanges(); } catch (DbEntityValidationException dbValidationEx) { foreach (DbEntityValidationResult entityErr in dbValidationEx.EntityValidationErrors) { foreach (DbValidationError error in entityErr.ValidationErrors) { Console.WriteLine("Error: {0}",error.ErrorMessage); } } } Console.ReadKey(); } } }
編譯並執行上述示例時,您將在控制檯視窗中收到以下錯誤訊息。
Adding new Student to the database Error: FirstMidName is required
我們建議您逐步執行上述示例,以便更好地理解。
廣告