C# 不支持MongoDB序列化()

C# 不支持MongoDB序列化(),c#,.net,mongodb,C#,.net,Mongodb,我不知道我在做什么,也找不到关于这个错误是什么或甚至与之相关的任何其他参考资料 使用MondoDB和C#.NET尝试下面的代码时,收到错误消息Serialization()。不支持引用 我首先在我的代码中尝试了这一点: var maxReference = await Events.Find(p => true) .SortByDescending(p => p.Reference)

我不知道我在做什么,也找不到关于这个错误是什么或甚至与之相关的任何其他参考资料

使用MondoDB和C#.NET尝试下面的代码时,收到错误消息
Serialization()。不支持引用

我首先在我的代码中尝试了这一点:

var maxReference = await Events.Find(p => true)
                               .SortByDescending(p => p.Reference)
                               .Project(p => p.Reference)
                               .FirstOrDefault();
当在
FirstOrDefault
方法上失败时,我慢慢地一个方法一个方法地删除该方法,直到我不得不这样做:

var list = await Events.Find(p => true).ToListAsync();
var maxReference = list.Select(p => p.Reference)
                       .OrderByDescending(p => p)
                       .FirstOrDefault();
如果这是一个真正的限制,我愿意使用它,但是当我尝试使用
ReplaceOneAsync
方法时,我再次遇到了它

var form = new Event { Reference = maxReference + 1 };
var options = new UpdateOptions { IsUpsert = true };

await Events.ReplaceOneAsync(p => p.Reference == maxReference, form, options);
我的POCO定义为:

[BsonIgnoreExtraElements]
public class Event : IEvent
{
    public Event() {}

    public Event(int reference)
    {
        Reference = reference;
    }

    [BsonId]
    public ObjectId EventID { get; set; }

    [BsonRequired]
    [BsonIgnoreIfDefault]
    public int Reference { get; set; }
}

因此,在我的案例中,依赖注入使用了接口,而这是不受支持的。我想这与Mongo文档的实例化有关?下面是最后一个引导程序类。因此,这似乎不是一个蒙哥问题,而是一个南希问题

我换线
var collection=database.GetCollection(“collection”)
var collection=database.GetCollection(“collection”)

请注意集合类的ICollection接口。从那以后一切都正常了

之前:

public class Bootstrapper : DefaultNancyBootstrapper
{
    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {
        var connectionString = ;
        var databaseName = ;

        var client = new MongoClient("MongoDatabaseURL");
        container.Register(client);

        var database = client.GetDatabase("MongoDatabaseName");
        container.Register(database);

        var collection = database.GetCollection<ICollection>("collection");
        container.Register(collection);
    }
}
public类引导程序:DefaultNancyBootstrapper
{
受保护的覆盖无效配置ApplicationContainer(TinyIoCContainer)
{
var connectionString=;
var databaseName=;
var客户端=新的MongoClient(“MongoDatabaseURL”);
集装箱登记(客户);
var database=client.GetDatabase(“MongoDatabaseName”);
容器注册(数据库);
var collection=database.GetCollection(“collection”);
容器。登记(收集);
}
}
之后:

public class Bootstrapper : DefaultNancyBootstrapper {
    protected override void ConfigureApplicationContainer(TinyIoCContainer container)
    {
        var connectionString = ;
        var databaseName = ;

        var client = new MongoClient("MongoDatabaseURL");
        container.Register(client);

        var database = client.GetDatabase("MongoDatabaseName");
        container.Register(database);

        var collection = database.GetCollection<Collection>("collection");
        container.Register(collection);
    }
}
public类引导程序:DefaultNancyBootstrapper{
受保护的覆盖无效配置ApplicationContainer(TinyIoCContainer)
{
var connectionString=;
var databaseName=;
var客户端=新的MongoClient(“MongoDatabaseURL”);
集装箱登记(客户);
var database=client.GetDatabase(“MongoDatabaseName”);
容器注册(数据库);
var collection=database.GetCollection(“collection”);
容器。登记(收集);
}
}

您是否尝试过删除BsonRequired?我遇到了同样的问题。你找到解决办法了吗?我终于找到了答案。我已经贴出了答案。不确定这是否是您所经历的,但我的问题与Nancy和依赖注入有关。我发现我不能像我想的那样使用接口,也不能像其他DI系统那样使用接口。