每个indicated duplicate的日志记录在这里不适用,因为我在SQL Server上的用户帐户不是securityadmin
角色的成员。我必须看看替代方法。
我想记录实体框架传递给我的数据库的查询。通常,我会使用SQL Profiler来查看查询,但是在这种特殊情况下,数据库管理员没有授予我的用户权限以允许这样做。
我的查询如下:
var leads = await _context.EmailStatus.Where(x => !x.Deleted && x.SoftwareId == softwareId).ToListAsync();
要获取sql查询,我做了看似有意义的操作(但显然不起作用):
var query = ((System.Data.Entity.Core.Objects.ObjectQuery)leads.AsQueryable()).ToTraceString();
Logger.LogInfo($"Query to get leads is {query}");
由于此操作无效,因此我对此进行了调整:
var query = ((System.Data.Entity.Core.Objects.ObjectQuery)_context.EmailStatus.Where(x => !x.Deleted && x.SoftwareId == softwareId)).ToTraceString();
两次尝试都有略有不同的错误:
无法转换类型为“ System.Data.Entity.Infrastructure.DbQuery`1 [EmailTracker.Models.EmailStatus]”的对象来键入“ System.Data.Entity.Core.Objects.ObjectQuery”。
那么我如何获得实体框架来给我发送到数据库的实际SQL查询?