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