0

Entity Framework4 (Code First) を使用しています。

生成されたクエリを見たいです。

このコードは 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、誰か知っていますか?

4

2 に答える 2

2

SQL クエリをトレースできるミニ プロファイラーをチェックアウトします。そして、ここにその設定を詳述した素敵なブログ投稿があります.

于 2012-06-11T17:25:10.380 に答える
2

私はこれがうまくいくと思います:

var trace = result.ToString();
于 2012-06-11T17:25:44.683 に答える