簡體   English   中英

Mongo無法使用枚舉反序列化類

[英]Mongo failing to deserialize class with enums

我有這個枚舉:

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; }
    }

當我將其插入mongo集合時,我得到以下對象(在mongo中):

{ "_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控制序列化/反序列化覆蓋

 [BsonElement("eventType")]

代替

[DataMember(Name = "eventType", IsRequired = true)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM