c# - Entity Framework 4.0 : How to log sql statements

标签 c# entity-framework entity-framework-4 log4net

我在应用程序中使用 Entity Framework 4.0 如何打印 sql 语句的日志。在 EF 6 中,sampleEntities.Database.Log 的工作方式如下

readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public sampleEntities()
    : base("name=sampleEntities")
{
    this.Database.Log = s => log.Info("LINQSQLLOG : " + s);
}

最佳答案

您可以按如下所示进行操作。

方法一:

IQueryable myQuery = from x in yourEntities
             where y.id = 45 
             select y;

var sql = ((System.Data.Objects.ObjectQuery)myQuery).ToTraceString();

方法二:

您可以使用 Clutch.Diagnostics.EntityFramework API。它提供了用于跟踪 EntityFramework sql 命令的 API。

Nuget :

PM > Install-Package Clutch.Diagnostics.EntityFramework

Git 上的 API:Clutch API

更新: Logging and Tracing SQL Queries Clutch

关于c# - Entity Framework 4.0 : How to log sql statements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40766608/

相关文章:

c# - 在 ContinueWith 中重新抛出先前的异常

entity-framework - 如何使用 EF Code First 散列或加密字段?

c# - 使用空值执行存储过程

mysql - C# Entity Framework : There is already an open DataReader associated with this Connection which must be closed first

entity-framework-4 - EF 4.0 : Save Changes Retry Logic

c# - 我可以从枚举中取出前 n 个元素,然后仍然使用枚举的其余部分吗?

c# - 处理多个 DropDown 选择的更好方法

c# - 使用 DX11 渲染文本

c# - CTP 4 不考虑基类属性

.net - 在SQL Server 2008数据库中维护数据历史记录的方法