簡體   English   中英

實體框架和SQL Server OUTPUT子句

[英]Entity Framework and SQL Server OUTPUT clause

我想在使用Entity Framework時使用SQL OUTPUT子句來保存數據庫中的記錄歷史記錄。 為此,EF需要為DELETE語句生成以下示例。

Delete From table1
output deleted.*, 'user name', getdate() into table1_hist
Where field = 1234;

表table1_hist與table1具有相同的列,並添加了兩列來存儲執行操作的用戶的名稱及其發生的時間。 但是,EF似乎沒有辦法支持這個SQL Server的子句,所以我迷失了如何實現它。

我查看了EF的源代碼, DELETE命令是在內部靜態方法(GenerateDeleteSql in System.Data.Entity.SqlServer.SqlGen.DmlSqlGenerator class) ,因此我無法擴展該類以添加我想要的行為。 看起來我將不得不根據現有代碼重寫SQL Server提供程序,但這是我想要避免的...

所以,我的問題是,是否還有另一種選擇(例如擴展)或者我是否必須重寫此提供程序?

謝謝。

你考慮過嗎?

  • 使用存儲過程封裝數據邏輯
  • 用於捕獲數據的刪除觸發器
  • 更改數據捕獲(僅限企業版)
  • 實際上並沒有刪除數據 - 只是在數據中設置一個標志以將其標記為已刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM