none
linq to entity访问数据库,如何获取到这个SQL语句的字符串? RRS feed

  • 问题

  • 比如EntityModel ef=new EntityModel();

    ef.Person.Where(c=>c.Name.Contains("a")&&c.Id>1);<<<<<<如何获取到生成的SQL语句

    不是SQL Server Profiler获取到的哦,是在程序编码时获取的


    证明自己存在

    2012年5月22日 8:23

答案

全部回复

  • 您好,关于您的问题,请参见这篇文章,文章中有从Linq to Entities获得T-SQL的具体代码。希望对您有帮助。

    Allen Li [MSFT]
    MSDN Community Support | Feedback to us


    2012年5月22日 16:47
    版主
  • 谢谢你,我知道你那个方法,但是我需要的是

    EntityModel ef=new EntityModel();

    ef.Person.Where(c=>c.Name.Contains("a")&&c.Id>1);<<<<<<这个如何获取到生产的字符串,因为我的过滤条件远比这个复杂所以输入的实质是一个变量Expression<Func<Person,boll>> funcFilter,因此为ef.Person.Where(funcFilter),这时要获取转换的SQL语句字符串


    证明自己存在


    2012年5月23日 2:48
  • 您好,不太明白您的意思, ef.Person.Where(c=>c.Name.Contains("a")&&c.Id>1) 这样的语句也是可以通过那种方法得到T-SQL的。


    Allen Li [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Link_firer 2012年5月23日 7:44
    • 取消答案标记 Link_firer 2012年5月24日 4:25
    2012年5月23日 5:55
    版主
  • 非常感谢,呵呵,我理解错了,那个方法都可以,但是现在遇到新问题了:由于我给值是funcFilter,生成的SQL有变量,还没有赋值,不能直接执行


    证明自己存在


    2012年5月23日 7:46