system.formatexception:在估算XXX属性的XXX属性时发生错误:未知的歧视器值' jsonelement'
我正在使用MongoDB进行ASP.NET核心项目。
我想从hotelbookingdocument
获取预订酒店的列表。
public class HotelBookingDocument
{
public string Id { get; set; }
public HotelDocument Hotel { get; set; }
// removed rest
}
public class HotelDocument
{
public List<RoomDocument> Rooms { get; set; }
// removed rest
}
public class RoomDocument
{
public object SupplierReference { get; set; }
// removed rest
}
// removed rest
查询
BsonClassMap.RegisterClassMap<HotelBookingDocument>(cm =>
{
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
cm.MapIdMember(c => c.Id)
.SetSerializer(new StringSerializer(BsonType.ObjectId))
.SetIgnoreIfDefault(true);
});
BsonClassMap.RegisterClassMap<HotelBookingDocument.RoomDocument>(cm =>
{
cm.AutoMap();
});
BsonClassMap.RegisterClassMap<HotelBookingDocument.HotelDocument>(cm =>
{
cm.AutoMap();
});
屏幕
public async Task<List<HotelBookingDocument>> GetHotelsList(string transactionId)
{
var hotels = await HotelBookingCollection.Find(x => x.TransactionId == transactionId).ToListAsync(); // this does not work
return hotels;
}
数据库中供应权属性的
配置 截图。
"SupplierReference": {
"_t": "JsonElement"
},
错误:
System.FormatException: An error occurred while deserializing the Hotel property of class HotelBookingDocument: An error occurred while deserializing the Rooms property of class HotelBookingDocument+HotelDocument: An error occurred while deserializing the SupplierReference property of class HotelBookingDocument+RoomDocument: Unknown discriminator value 'JsonElement'.
---> System.FormatException: An error occurred while deserializing the Rooms property of class HotelBookingDocument+HotelDocument: An error occurred while deserializing the SupplierReference property of class HotelBookingDocument+RoomDocument: Unknown discriminator value 'JsonElement'.
---> System.FormatException: An error occurred while deserializing the SupplierReference property of class HotelBookingDocument+RoomDocument: Unknown discriminator value 'JsonElement'.
---> MongoDB.Bson.BsonSerializationException: Unknown discriminator value 'JsonElement'.
at MongoDB.Bson.Serialization.BsonSerializer.LookupActualType(Type nominalType, BsonValue discriminator)
at MongoDB.Bson.Serialization.Conventions.ObjectDiscriminatorConvention.GetActualType(IBsonReader bsonReader, Type nominalType)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.DeserializeDiscriminatedValue(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)...............
当我尝试通过Transaction Id从HotelbookingCollection获取酒店书列表时,我会出现错误。 但是我发现酒店书收录的酒店书籍我没有遇到任何错误。我可以第一次获得酒店书。
为什么发生此错误?
请帮助我找到这个问题。
谢谢
I am wokring a asp.net core project with mongoDB.
I want to get the list of booked hotels from HotelBookingDocument
.
public class HotelBookingDocument
{
public string Id { get; set; }
public HotelDocument Hotel { get; set; }
// removed rest
}
public class HotelDocument
{
public List<RoomDocument> Rooms { get; set; }
// removed rest
}
public class RoomDocument
{
public object SupplierReference { get; set; }
// removed rest
}
// removed rest
Configuration
BsonClassMap.RegisterClassMap<HotelBookingDocument>(cm =>
{
cm.AutoMap();
cm.SetIgnoreExtraElements(true);
cm.MapIdMember(c => c.Id)
.SetSerializer(new StringSerializer(BsonType.ObjectId))
.SetIgnoreIfDefault(true);
});
BsonClassMap.RegisterClassMap<HotelBookingDocument.RoomDocument>(cm =>
{
cm.AutoMap();
});
BsonClassMap.RegisterClassMap<HotelBookingDocument.HotelDocument>(cm =>
{
cm.AutoMap();
});
Query
public async Task<List<HotelBookingDocument>> GetHotelsList(string transactionId)
{
var hotels = await HotelBookingCollection.Find(x => x.TransactionId == transactionId).ToListAsync(); // this does not work
return hotels;
}
Screenshot of SupplierReference Property in Database
Why this "_t": "JsonElement"
did add automatically?
"SupplierReference": {
"_t": "JsonElement"
},
Error:
System.FormatException: An error occurred while deserializing the Hotel property of class HotelBookingDocument: An error occurred while deserializing the Rooms property of class HotelBookingDocument+HotelDocument: An error occurred while deserializing the SupplierReference property of class HotelBookingDocument+RoomDocument: Unknown discriminator value 'JsonElement'.
---> System.FormatException: An error occurred while deserializing the Rooms property of class HotelBookingDocument+HotelDocument: An error occurred while deserializing the SupplierReference property of class HotelBookingDocument+RoomDocument: Unknown discriminator value 'JsonElement'.
---> System.FormatException: An error occurred while deserializing the SupplierReference property of class HotelBookingDocument+RoomDocument: Unknown discriminator value 'JsonElement'.
---> MongoDB.Bson.BsonSerializationException: Unknown discriminator value 'JsonElement'.
at MongoDB.Bson.Serialization.BsonSerializer.LookupActualType(Type nominalType, BsonValue discriminator)
at MongoDB.Bson.Serialization.Conventions.ObjectDiscriminatorConvention.GetActualType(IBsonReader bsonReader, Type nominalType)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.DeserializeDiscriminatedValue(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.ObjectSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
at MongoDB.Bson.Serialization.Serializers.SerializerBase`1.MongoDB.Bson.Serialization.IBsonSerializer.Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)...............
when I try to get list of hotelBookings from HotelBookingCollection by transactionId, I got above error.
But I find a hotelBooking from HotelBookingCollection i did not get any error. I can get first hotelBooking.
Why this error occur?
Please help me to find the issue.
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论