c# - 不支持 MongoDB 序列化 ()

标签 c# .net mongodb

不确定我在做什么,也找不到关于此错误是什么或与之相关的任何其他引用。

当我使用 MondoDB 和 C#.NET 尝试下面的代码时,我收到错误消息 Serialization().Reference is not supported

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

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; }
}

最佳答案

所以事实证明,在我的情况下,在依赖注入(inject)中我使用了接口(interface),但不支持。我想这与 Mongo 文档的实例化有关?下面是最终的 Bootstrap 类。所以它似乎最终不是 Mongo 问题,而是 Nancy 问题。

我换行 var collection = database.GetCollection<ICollection>("collection");var collection = database.GetCollection<Collection>("collection"); .

注意 Collection 类的 ICollection 接口(interface)。之后一切正常。

之前:

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 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);
    }
}

关于c# - 不支持 MongoDB 序列化 (),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32217201/

相关文章:

c# - Entity Framework 重复主键

c# - 如何调试 Lazy<T>?

.net - 您创建 stub 的首选工具是什么?

javascript - Mocha 测试.Timeout 2000ms

java - com.google.code.morphia :morphia:jar:1. 00-SNAPSHOT 的 POM 丢失,没有可用的依赖信息

mongodb - Docker的Spring Boot mongo异常

c# - 定位调用 ComposeParts 后创建的对象的导出

c# - 在 C# 中写入特定路径中的文本文件?

c# - 使用 C# 的 SOAP 客户端

c# - 如何将对象转换为动态类型?