实体框架SQL Server数据库日志记录在Visual Studio / Application Insights遥测中

时间:2016-03-14 14:18:04

标签: sql-server entity-framework visual-studio-2015 azure-application-insights

快乐的Pi日。我试图让实体框架将其SQL Server查询记录到Visual Studio中的调试窗口。基于一些搜索,包括EF6 SQL Logging – Part 1: Simple Logging上的这篇博文,我在MVC应用程序中向控制器添加了以下using语句:

using (var context = new SomeDataContext())
        {
            context.Database.Log = Console.Write;

            SomeDataObject someData = new SomeDataObject();
            <set some app variables>

            _someDataContext.SomeData.Attach(someData);
            _someDataContext.ChangeTracker.Entries<IObjectWithState>().Single().State = Helpers.ConvertState(someData.ObjectState);
            _someDataContext.SaveChanges();

           return View(someDataViewModel);
        }

这是我开始感到困惑的地方。我有两台开发机器。一个是运行Visual Studio Professional 2015的Windows 7计算机,无法将任何SQL Server输出记录到调试窗口。但是,另一台运行Visual Studio Community 2015的Windows 8.1计算机成功输出了SQL Server事务。我在两个IDE之间注意到的唯一区别是,当SQL调试工作时(VS社区),我有一些Application Insights通知,当它没有工作时(VS Pro),我没有任何Application Insights通知。

我在AI调试输出中看到的消息似乎是AI正在使用的一个名为SqlDataReader的类。

我在每个IDE中使用完全相同的解决方案,包括相同的ApplicationInsights.config。配置文件中没有<InstrumentationKey>,所以我不确定为什么我会收到任何AI消息。

我确实拥有Azure权益的MSDN订阅,当我第一次创建解决方案时,我可能已在Visual Studio中登录到MSDN。

以下是我需要查看的示例,来自运行VS社区的开发计算机:

Opened connection asynchronously at 3/14/2016 9:22:44 AM -04:00

SELECT 
[Extent1].[someDataID] AS [ID], 
[Extent1].[someDataName] AS [Name], 
[Extent1].[someDataAddressLine1] AS [AddressLine1], 

[Extent2].[otherDataID] AS [OtherID], 

[Extent3].[ExtraDataID] AS [ExtraID2], 

FROM     [dbo].[SomeData] AS [Extent1]
LEFT OUTER JOIN [dbo].[OtherData] AS [Extent2] ON [Extent1].[someDataID] = [Extent2].[OtherDataID]
LEFT OUTER JOIN [dbo].[ExtraData] AS [Extent3] ON [Extent1].[someDataID] = [Extent3].[ExtraDataID]



-- Executing asynchronously at 3/14/2016 9:22:44 AM -04:00

Application Insights Telemetry (unconfigured): {"name":"Microsoft.ApplicationInsights.Dev.RemoteDependency","time":"2016-03-14T13:22:44.8155852+00:00","tags":{"ai.device.roleInstance":"xwing","ai.application.ver":"Unknown","ai.device.type":"starfighter","ai.device.id":"xwing","ai.device.oemName":"Resistance","ai.device.model":"X-wing Starfighter","ai.device.network":"spacenet","ai.device.language":"en-US","ai.internal.sdkVersion":"1.2.3.490"},"data":{"baseType":"RemoteDependencyData","baseData":{"ver":2,"name":"localhost\\mssqlinstance | datadb","kind":1,"value":14.1898,"dependencyKind":0,"success":true,"async":true,"dependencySource":0,"properties":{"DeveloperMode":"true"}}}}
-- Completed in 15 ms with result: SqlDataReader



Closed connection at 3/14/2016 9:22:44 AM -04:00

我的问题基本上是 - 我如何让Visual Studio将实体框架日志记录 - 特别是SQL查询 - 输出到调试窗口?上面的using语句实际上是在做什么,或者是两个dev机器之间的Application Insights不一致吗?

0 个答案:

没有答案