使用RailDb和Serilog查询问题

时间:2014-11-20 00:53:11

标签: linq ravendb serilog

我将Serilog logevents存储到ravenDb中。

现在我尝试编写一个查询,其中所有文档都具有特定的"动态"应该退回。

这是我的查询(不干不了)

var logsWithRole = DataSession.Query<Serilog.Sinks.RavenDB.Data.LogEvent>()
          .Where(o => o.Properties.ContainsKey("Role")).ToList();

这是我尝试查询的ravenDb中的一个文档的示例:

{
  "Timestamp": "2014-11-20T01:20:05.5095877+01:00",
  "MessageTemplate": "{Role}, {User} logged in",
  "Level": "Information",
  "Exception": null,
  "RenderedMessage": "True, \"Steve\" logged in",
  "Properties": {
    //this propery below (Role and it's value) I'm trying to get
    "Role": true,
    "User": "Steve"
  }
}

刚收到NotSupportedException:无法理解表达式:.Where(o =&gt; o.Properties.ContainsKey(&#34; Role&#34;))

我在这里做错了什么?由于Serilogs结构化日志记录功能和将其与RavenDb集成的nuGet,这样的一些查询必须能够在Properties-object及其内部的对象和值中完成?

1 个答案:

答案 0 :(得分:1)

使用:

          .Where(o => o.Properties["Role"] != null).ToList();