首页新闻找找看学习计划

获得EntityFramework生成的SQL语句

0
悬赏园豆:100 [已解决问题] 解决于 2013-05-07 14:23
 1         DbContext db = new dbEntities();
 2         /// <summary>
 3         /// 新增
 4         /// </summary>
 5         /// <param name="model"></param>
 6         /// <returns></returns>
 7         public virtual T Add(T model)
 8         {
 9             db.Set<T>().Add(model);
10             db.SaveChanges();
11             return model;
12         } 

有一个需求,对表A执行增删改,

然后在表B记录  对表A的执行的SQL语句  insert update delete语句

我想要在db.SaveChanges()之前、或者之后

获得EntityFramework生成的对表A的SQL语句

然后插入到表B中,如何或者EF生成的SQL语句?

三线程序员的主页 三线程序员 | 初学一级 | 园豆:36
提问于:2013-04-29 10:24
< >
分享
最佳答案
0

我恰好有差不多的需求, 可以用EFTracingProvider来实现  http://efwrappers.codeplex.com/

所有的增删改查的 sql 都可以log

收获园豆:20
gunsmoke | 老鸟四级 |园豆:3592 | 2013-04-30 05:07
其他回答(8)
0

你跟进Add方法里去看看,在最里层一定有将EF语句转成SQL去操作数据库的,你看具体是在哪转,把它存起来插入到B表就行了。

收获园豆:10
hexllo | 园豆:405 (菜鸟二级) | 2013-04-29 10:28

Add方法是EF的方法,看不到,手头又没有反编译工具

支持(0) 反对(0) 三线程序员 | 园豆:36 (初学一级) | 2013-04-29 10:58

@没事编编程: 那我也没办法了,反编译工具我到有,不过EF那么大,反后也不好找吧?要的话加我QQ,我发你试试,553030761

支持(0) 反对(0) hexllo | 园豆:405 (菜鸟二级) | 2013-04-29 11:01
0

这个在业务上面处理应该比较好,EF早期的版本是可以看到生成的sql,新版本已经看不到了。不要在这个上面钻牛角尖

收获园豆:10
清海扬波 | 园豆:841 (小虾三级) | 2013-04-29 13:23

怎么在业务上面处理?求举例~~

支持(0) 反对(0) 三线程序员 | 园豆:36 (初学一级) | 2013-04-29 14:43

@没事编编程: 如果你要记录所有的dml,那么可能需要分析数据库日志了,不然不好做。

支持(0) 反对(0) 清海扬波 | 园豆:841 (小虾三级) | 2013-04-29 16:18
0

还是用sql里面的触发器吧。

收获园豆:10
丫的 | 园豆:1575 (小虾三级) | 2013-04-29 15:17
0

可以使用SQL Server Profiler跟踪你的数据库,用这个可以看到你用EF执行操作时候生成的语句

收获园豆:10
Marchers | 园豆:212 (菜鸟二级) | 2013-04-29 21:27

+1

支持(0) 反对(0) 一刀一个 | 园豆:231 (菜鸟二级) | 2013-04-29 22:26

此答案正解...

支持(0) 反对(0) NET未来之路 | 园豆:131 (初学一级) | 2013-04-29 22:50

正解~~~

支持(0) 反对(0) ackamen | 园豆:1 (初学一级) | 2013-05-02 11:50
0

使用 ToTraceString 方法 ,或者使用SQL Server Profiler来实现

收获园豆:10
陈希章 | 园豆:2338 (老鸟四级) | 2013-04-30 07:08
0

ToTraceString() 方法可以

收获园豆:10
贺臣 | 园豆:107 (初学一级) | 2013-04-30 14:54
0
收获园豆:10
dax.net | 园豆:228 (菜鸟二级) | 2013-04-30 20:14
0

搞个触发器,把所有的语句插入另外一张表中。到时候从此表中读取出来即可。

收获园豆:10
冰河之刃 | 园豆:244 (菜鸟二级) | 2013-05-03 13:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册