sách gpt4 ai đã đi

c# - Entity Framework 查询 ToString 不会产生 SQL 查询

In lại 作者:行者123 更新时间:2023-11-30 22:07:03 29 4
mua khóa gpt4 Nike

通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。

但是,我偶尔会调用此方法并获取查询对象的运行时类型。这是我的具体示例:

Entity input = ...;
IQueryable query = dbContext.SetOfEntity.Where(e => e.Prop == input.Prop);

更具体地说,我在 VS2013 中设置断点并将鼠标悬停在查询对象上,然后看到 System.Data.Entity.Infrastructure.DbQuery而不是运行该查询的 SQL。有趣的是,如果我将鼠标悬停在 DBSet 属性 ( dbContext.SetOfEntity) 上,我Thực ra看到了关联表的基本选择 SQL。只有当我过滤结果时,我才丢失了 SQL。

显然,这是一个非常简单的查询,我可以自己计算出 SQL,但是这个问题发生在更复杂的查询上,如果能够调试发送到服务器的 SQL 而无需运行数据库跟踪。

一些背景

前一段时间,我使用的是 EF5,ToString() 似乎可以正常工作。在切换到 EF6 之前不久,似乎KHÔNG的查询向我显示了 SQL,但在切换到 EF6 之后,它又恢复了正确的行为。此外,每当我将鼠标悬停在 IQueryable 查询上并尝试使用 IDE 的“结果 View ”功能时,它都会告诉我“无法评估子项”。这可能是一个单独的问题,但我想我会把它包括在内,以防它有一个共同的原因。

1 Câu trả lời

如果在对数据库执行 SQL 之前不需要 SQL,您可以执行以下操作:

dbContext.Database.Log = s => Debug.WriteLine(s);

这会将 SQL(和一些附加数据)打印到调试输出。
有关详细信息,请参阅以下链接:http://msdn.microsoft.com/de-DE/data/dn469464

另外,按照 martin_costello 的建议,在尝试通过 ToString() 获取 SQL 之前,请检查您是否没有查询数据库。 .它也发生在我身上,因为使用 IEnumerable<>,我已经得到了对象。 “到早”(而不是 IQueryable<> ),因此从数据库中获取了许多实体,并“在代码中”而不是“在 SQL 中”进行了一些过滤...

关于c# - Entity Framework 查询 ToString 不会产生 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23223199/

29 4 0
Bài viết được đề xuất: c# - 跨 VS 2012 和 VS 2010 的 TFS 2012 工作区
Bài viết được đề xuất: c# - 无法使用 3 层架构添加/更新
Bài viết được đề xuất: php - 循环日期函数php
Bài viết được đề xuất: c# - 是否可以创建委托(delegate)而不必将其设为静态?
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com