Model.edmx。app.config。產生完成後,方案總管會出現 Model.edmx、Model.tt (T4 模板)、Model.Context.tt,並自動建立實體類別與 DbContext 衍生類別。
若為某實體 (如 UserInfo) 映射了 Insert 預存程序,則 Update、Delete 也必須映射預存程序,否則執行時會擲出例外。
Model.edmx 開啟設計介面,右鍵空白處 → 模型瀏覽器。UserInfo,右鍵 → 預存程序對應 (或點選實體,屬性視窗找 Stored Procedure Mapping)。UserName → @UserName)。Result Column Binding。回傳結果集的預存程序(如 usp_GetUsersByDept)不走 CUD 對應,需建立 Function Import:
GetUsersByDept,選擇預存程序 usp_GetUsersByDept。UserInfo(若回傳標量或複雜類型則選對應項)。GetUsersByDept(...) 方法,可直接呼叫:context.GetUsersByDept(deptId).ToList()。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();
}
Dispose 釋放連線。