在EF6中延迟加载时如何记录

时间:2019-02-12 19:46:39

标签: c# entity-framework entity-framework-6 lazy-loading

延迟加载实体时,是否有任何可能的日志记录方式。

我首先在Entity Framework 6中使用数据库。为了有用,在检索(非延迟)初始实体时,无需登录,而仅在延迟加载子实体时才需要登录。如果日志中包含以下任何信息,则可能有用:延迟加载的原始sql,延迟加载了哪些实体属性,触发了延迟加载的C#中的行号。

1 个答案:

答案 0 :(得分:0)

这是一个古老的问题,但是其他人可能会遇到与我相同的问题。

看着official EF documentation about logging,我注意到样本中的延迟加载查询显示了一个名为@EntityKeyValue1的参数。由于所有延迟加载的查询都将至少需要一个关键参数,因此我假设这一参数将始终存在。因此,我设法通过以下方式记录了所有延迟加载的查询:

  Database.Log = s =>
  {
      if (s.Contains("@EntityKeyValue1"))
      {
          Console.WriteLine($"Lazy loading query: {s}");
      }
  };