【问题标题】:Entity Framework4, to see generated query?Entity Framework4,查看生成的查询?
【发布时间】:2012-06-14 15:08:10
【问题描述】:

我正在使用 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,有人知道吗?

【问题讨论】:

  • 我强烈建议您查看 EF Profiler:efprof.com

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


【解决方案1】:

查看mini-profiler,它允许您跟踪 SQL 查询。这里有一个nice blog post 详细说明了它的设置。

【讨论】:

    【解决方案2】:

    我认为这会奏效:

    var trace = result.ToString();
    

    【讨论】:

    • 我的意思是,DbQuery 中的相同功能是使用 ToString() 实现的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 2020-10-27
    相关资源
    最近更新 更多