Wat*_* v2 0 c# entity-framework entity-framework-4
如何获取此类查询的跟踪字符串:
var product = _context.Products.Where( p => p.Category == "Windows" )
.SingleOrDefault();
// I can't do this since product is not an ObjectQuery instance
// product.ToTraceString();
Run Code Online (Sandbox Code Playgroud)
针对不同问题的不同答案.
你不能这样打电话ToTraceString():
var product = _context.Products.Where( p => p.Category == "Windows" )
.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
var q = _context.Products.Where( p => p.Category == "Windows" )
var ts = ((ObjectQuery)q).ToTraceString();
var product = q.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
......但它不是100%准确.在MSSQL EF提供商将使用TOP 2了Single此会错过.
你可以接近这个:
var q = _context.Products.Where( p => p.Category == "Windows" )
var ts = ((ObjectQuery)q.Take(2)).ToTraceString();
var product = q.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
...它应该为您提供正确的SQL,但需要了解实现.
原始问题歪曲了问题.我原来的答案是:
var ts = (product as ObjectQuery).ToTraceString();
Run Code Online (Sandbox Code Playgroud)
这是你需要做的:
string trace = ((ObjectQuery)_context.Products
.Where(p => p.Category == "Windows")).ToTraceString();
Run Code Online (Sandbox Code Playgroud)
编译器不接受从Product EntityObject到ObjectQuery的转换,但IQueryable <Product>可以转换为ObjectQuery,所以基本上你只需要.SingleOrDefault()在尝试查看跟踪字符串之前摆脱该方法.
| 归档时间: |
|
| 查看次数: |
2533 次 |
| 最近记录: |