首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

ADO.NET Entity Data Model (.edmx) 新增與預存程序對應完整教學

     編輯:更多程式設計知識

建立 Entity Data Model

  1. 專案右鍵 → 加入 → 新增項目 → ADO.NET Entity Data Model,命名為 Model.edmx。
  2. 精靈選擇 從資料庫產生模型 (Database First)。
  3. 設定連線(或新建連線),儲存連接字串於 app.config。
  4. 選擇資料庫物件:勾選資料表、檢視、預存程序,完成產生。

產生完成後,方案總管會出現 Model.edmx、Model.tt (T4 模板)、Model.Context.tt,並自動建立實體類別與 DbContext 衍生類別。

將預存程序對應至實體的 CUD 操作

若為某實體 (如 UserInfo) 映射了 Insert 預存程序,則 Update、Delete 也必須映射預存程序,否則執行時會擲出例外。

操作步驟

  1. 雙擊 Model.edmx 開啟設計介面,右鍵空白處 → 模型瀏覽器。
  2. 在 Entity Types 找到 UserInfo,右鍵 → 預存程序對應 (或點選實體,屬性視窗找 Stored Procedure Mapping)。
  3. 在對應面板分別指定 Insert、Update、Delete 的預存程序,並將參數對應至實體屬性(如 UserName → @UserName)。
  4. 若預存程序回傳新增後的 Identity,勾選 Use Original Values 並對應 Result Column Binding。

查詢類預存程序:Function Import

回傳結果集的預存程序(如 usp_GetUsersByDept)不走 CUD 對應,需建立 Function Import:

  1. 模型瀏覽器 → Function Imports 右鍵 → 新增 Function Import。
  2. 名稱:GetUsersByDept,選擇預存程序 usp_GetUsersByDept。
  3. 回傳類型:選 Entities → UserInfo(若回傳標量或複雜類型則選對應項)。
  4. 完成後,Context 會多出 GetUsersByDept(...) 方法,可直接呼叫:context.GetUsersByDept(deptId).ToList()。

程式碼範例:使用 Context 執行 CRUD

using (var ctx = new NorthwindEntities()) {
    // 新增 (自動呼叫對應的 Insert SP)
    var u = new UserInfo { UserName = "Tom", Email = "tom@test.com" };
    ctx.UserInfoes.Add(u);
    ctx.SaveChanges(); // 觸發 Insert SP
    
    // 查詢 (呼叫 Function Import)
    var list = ctx.GetUsersByDept(10).ToList();
    
    // 修改 (觸發 Update SP)
    u.Email = "tom2@test.com";
    ctx.SaveChanges();
    
    // 刪除 (觸發 Delete SP)
    ctx.UserInfoes.Remove(u);
    ctx.SaveChanges();
}

注意事項

  • 預存程序參數名稱建議與實體屬性一致,減少手工對應。
  • 複雜查詢回傳非實體型別時,建立 Complex Type 作為 Function Import 回傳類型。
  • Database First 模式下,資料庫變更需 更新模型從資料庫 同步。
  • 避免在同一 Context 長時間持有大量實體,適時 Dispose 釋放連線。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved