2
我有这样的枚举:蒙戈未能反序列化与枚举类
public enum EventType
{
Regular = 1,
Error = 2,
AccessDenied = 3,
Warning = 4,
Maintenance = 5,
CustomMade = 6
}
我有下面的类:
[DataContract]
public class Event : IEvent
{
[DataMember(Name = "eventType", IsRequired = true)]
public EventType EventType { get; set; }
[DataMember(Name = "occuringDate", IsRequired = true)]
public DateTime OccuringDate { get; set; }
[DataMember(Name = "physicalServerId", IsRequired = true)]
public string PhysicalServerId { get; set; }
[DataMember(Name = "text", IsRequired = true)]
public string Text { get; set; }
[DataMember(Name = "systemIds", IsRequired = true)]
public ICollection<string> SystemIds { get; set; }
[DataMember(Name = "_id", IsRequired = true)]
public string Id { get; set; }
}
当我将其插入到我的蒙戈集合,我得到以下对象(在蒙戈):
{ "_id" : "1", "eventType" : 1, "occuringDate" : "2014-02-12T20:04:20.4328247+02
:00", "physicalServerId" : "10", "text" : "User has logged in successfully.", "s
ystemIds" : [ "1", "3" ], "details" : "userId: 2" }
现在,当我尝试读取对象是这样的:
MongoClient mongoClient = new MongoClient(connectionString);
MongoServer mongoServer = mongoClient.GetServer();
this.db = mongoServer.GetDatabase("eventsLog");
eventsCollection = this.db.GetCollection<Event>("eventsLog");
eventsCollection.Exists();
this.eventsCollection.FindAll().SetSkip((int)(page * perPage)).SetLimit((int)perPage).ToList();
我得到一个异常:Element 'eventType' does not match any field or property of class LogAggregation.PublicLibrary.Models.Event.
我在做什么错?使用BsonAttributes控制系列化
你添加的事实后场?有些文件是否包含它们,有些则不是?如果是这种情况,你需要告诉BSON序列化器,一些元素可能不存在,那没关系。将[BsonIgnoreExtraElements]添加到您的班级。 – Matt
@Matt不,所有的元素在那里,当这是写入mongo –
你看过[BsonElement(“eventType”)]属性?我以前从未使用过Mongo和DataContract。 – Matt