实体Framework4,看生成的查询?

时间:2012-06-11 17:23:33

标签: asp.net asp.net-mvc-3 linq entity-framework entity-framework-4

我正在使用Entity Framework4(代码优先)。

我希望看到生成的查询。

我在Stackoverflow中找到了这段代码。

var trace = ((System.Data.Objects.ObjectQuery)result).ToTraceString();

但这不起作用,错误信息说,

Unable to cast object of type 'System.Data.Entity.Infrastructure.DbQuery`1[PJ.Mysql.Entities.Order]' to type 'System.Data.Objects.ObjectQuery'.

我的代码是,

[HttpGet]
public void test()
{
    EFOrdersRepository ordersRepository = new EFOrdersRepository();
    var query = ordersRepository.Orders;

    var result = from x in query
         where x.orderid == 99008326
         select x;

    var trace = ((System.Data.Objects.ObjectQuery)result).ToTraceString(); //it does not work

    Response.Write(trace);
}

EFOrdersRepository.cs

 public class EFOrdersRepository
{
private EFMysqlContext context = new EFMysqlContext();

public IQueryable<Order> Orders
{
    get { return context.orders; }
}
}

EFMysqlContext.cs

class EFMysqlContext : DbContext
{
     public DbSet<Order> orders { get; set; }
}

我真的想解决这个问题= 3,有谁知道?

2 个答案:

答案 0 :(得分:2)

签出允许您跟踪SQL查询的mini-profiler。这是一个nice blog post详细说明其设置。

答案 1 :(得分:2)

我认为这会奏效:

var trace = result.ToString();