在使用Entity Framework时,我想使用SQL OUTPUT clause来保存数据库中的记录历史记录。为此,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提供程序,但这是我想要避免的......
所以,我的问题是,是否还有另一种选择(例如扩展名)或我是否必须重写此提供者?
谢谢。
答案 0 :(得分:2)
你有没有考虑过