MongoDB C#驱动程序:查询拦截器?

时间:2018-02-23 11:52:02

标签: c# mongodb linq

MongoDB C#驱动程序是否支持像Entity Framework这样的查询拦截器?

我已查看过文档但无法找到任何内容。

基本上我需要做的是确保对数据库的某些查询(取决于上下文)始终具有某些限制。

例如,如果我的文档可以被软删除,那么我总是需要确保为{" SoftDeleted":false}添加了一个过滤器。 Entitity Framework通过查询拦截器优雅地处理它。

1 个答案:

答案 0 :(得分:3)

MongoClient允许订阅CommandStartedEvent。以下示例转储到控制台发送到服务器的每个命令:

var mongoClient = new MongoClient(new MongoClientSettings
{
    Server = new MongoServerAddress("localhost", 27017),
    ClusterConfigurator = cb =>
    {
        cb.Subscribe<CommandStartedEvent>(e =>
        {
            Console.WriteLine($"{e.CommandName} - {e.Command.ToJson(new JsonWriterSettings { Indent = true })}");
            Console.WriteLine(new String('-', 32));
        });
    }
});

CommandStartedEvent包含您可以用于特定逻辑的CommandNameCommand属性。