不确定我在做什么,也找不到任何其他有关此错误甚至是相关内容的参考资料。
当我使用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; }
}
答案 0 :(得分:0)
所以事实证明,在我的情况下,在依赖注入中我使用了接口而且不支持。我想这与Mongo Documents的实例化有关?下面是最终的bootstrapper类。所以它似乎最终不像南希问题那样是Mongo问题。
我改变了这条线
var collection = database.GetCollection<ICollection>("collection");
至
var collection = database.GetCollection<Collection>("collection");
。
注意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 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);
}
}