預存程式可以新增至 O/R 設計 工具,並當做一般 DataContext 方法執行。 它們也可以用來覆蓋預設的 LINQ to SQL 執行時的行為,以在將變更從實體類別儲存到資料庫時執行新增、更新及刪除(例如,呼叫 SubmitChanges 方法時)。
備註
如果您的預存程式傳回需要傳送回用戶端的值(例如,預存程式中計算的值),請在預存程式中建立輸出參數。 如果您無法使用輸出參數,請撰寫部分方法實作,而不是依賴 O/R 設計工具所產生的覆寫。 對應至資料庫產生值的成員必須在成功完成 INSERT 或 UPDATE 作業之後,設定為適當的值。 如需詳細資訊,請參閱 開發人員在覆寫預設行為中的責任。
備註
LINQ to SQL 會自動處理識別欄位(自動遞增)、rowguidcol(資料庫生成的全域唯一識別碼(GUID))和時間戳記欄的資料庫生成值。 其他欄位類型中資料庫產生的值會預料之外地造成 Null 值。 若要傳回資料庫產生的值,您應該手動設定為 true,並AutoSync設定IsDbGenerated為下列其中一項:AutoSync.Always、AutoSync.OnInsert 或 AutoSync.OnUpdate。
設定實體類別的更新行為
根據預設,使用 LINQ to SQL 實體類別中對資料所做的變更來更新資料庫(插入、更新和刪除)的邏輯是由 LINQ to SQL 執行時間提供。 運行時間會根據資料表的架構建立預設 INSERT、 UPDATE和 DELETE 命令(資料行和主鍵資訊)。 當不需要預設行為時,您可以指派特定的預存程式來執行必要的插入、更新和刪除,來操控數據表中的數據,以配置更新行為。 您也可以在未產生預設行為時執行此動作,例如,當您的實體類別對應至檢視時。 最後,當資料庫需要透過預存程式存取資料表時,您可以覆蓋預設的更新行為。
備註
本文中的指示說明 Visual Studio 中可用的互動式開發體驗 (IDE) 最新版本。 您的電腦可能會顯示某些使用者介面元素的不同名稱或位置。 您可能使用不同的 Visual Studio 版本或不同的環境設定。 如需詳細資訊,請參閱 個人化 IDE。
指定預存程式以修改實體類別的預設行為
在設計工具中開啟 LINQ to SQL 檔案。 (按兩下
.dbml方案總管中的檔案。)在 [伺服器總 管] 或 [資料庫總管] 中,展開 [ 預存程式 ],並找出您要用於實體類別之 Insert、Update 和/或 Delete 命令的預存程式。
將預存程式拖曳至 O/R 設計工具。
預存程式會被新增至方法窗格,作為 DataContext 方法。 如需詳細資訊,請參閱 DataContext 方法(O/R 設計工具)。
選取您要用來執行更新之預存程式的實體類別。
在 [屬性] 視窗中,選取要覆寫的命令(插入、更新或刪除)。
點擊使用執行時間文字旁的省略號(...),以開啟設定行為對話框。
選取自訂。
在 [ 自定義 ] 列表中選取所需的預存程式。
檢查 方法自變數 和 類別屬性 的清單,以確認 Method Arguments 是否對應至適當的 類別屬性。 將原始方法自變數 (
Original_<ArgumentName>) 對應至Update和Delete命令的原始屬性 (<PropertyName> (Original))。備註
根據預設,方法自變數會在名稱相符時對應至類別屬性。 如果已變更的屬性名稱不再匹配數據表和實體類別,且設計工具無法判斷正確的映射,您可能需要選擇對應的類別屬性來進行映射。
按一下 [確定] 或 [套用]。
備註
只要您在進行每個變更之後按兩下 [ 套用 ],就可以繼續設定每個類別和行為組合的行為。 如果您在按兩下 [ 套用] 之前變更類別或行為,則會出現警告對話框,並提供套用變更的機會。
若要還原為使用更新的預設運行時間邏輯,請按兩下 [屬性] 視窗中 [插入]、[更新] 或 [刪除] 命令旁的省略號,然後在 [設定行為] 對話框中選取 [使用運行時間]。