不确定我在做什么,也找不到关于此错误是什么或与之相关的任何其他引用。
当我使用 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/