ADO.NET实体框架用于插入/更新/删除的自定义SQL表达式

pau*_*ons 2 entity-framework linq-to-sql

在ScottGu的博客中,他展示了如何覆盖Linq to SQL类的方法,以便可以在.NET端自定义地覆盖对数据的修改.

http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx(插入/更新/删除部分的自定义SQL表达式) )

有没有办法在EF中实现相同的功能?

Ale*_*mes 6

对于EF 3.5,除了sprocs之外,你没有其他选择.

但是对于EF 4.0,我们为被ObjectContext调用ExecuteStoreCommand(..)和相关方法等添加了一种新方法.

因此,您可以覆盖SaveChanges(),它现在是虚拟的,并且在ObjectStateManager寻找 ObjectStateEntries您感兴趣的类型,即您感兴趣的EntityState(即插入)等中间.

找到后,您可以使用新ExecuteStoreCommand()方法直接对数据库执行命令.然后通过调用AcceptChanges()ObjectStateEntry你试图刷新更改您已经办理了数据库停止EF.

然后,您可以通过呼叫让EF为您完成其余的更改base.SaveChanges().

我知道这不太理想.但这是我能想到的最好的解决方法

亚历克斯