При получении документа из MongoDB я получаю следующую ошибку:
"Невозможно определить фактический тип объекта для десериализации. NominalType - System.Object, а BsonType - Array."
Объект, который я сериализую, имеет свойство Dictionary<string, object>
.Я могу поместить в словарь простую строку и вытащить ее без ошибки, но если есть List<string>
, тогда я получаю ошибку десериализации.
Я использую официальный драйвер c # (v 1.1).Я могу просто запросить документ, используя оболочку Mongo, так что мне кажется, что проблема с MongoDB.Bson.
Любые предложения / обходные пути?
Пример кода по запросу:
Пример объекта, сохраняемого в MongoDB:
public class WebUser
{
public int _id;
private DateTime startTime;
private DateTime stopTime;
private string browser;
private string sessionID;
private string ip;
public List<PageView> PageViews;
public Dictionary<string, Object> Session;
public Save(){/*Data access code here*/}
public static Single(int id){/*Data access code here*/}
}
Код доступа к данным:
public T Single<T>(int id) where T : class, new()
{
var server = MongoServer.Create(ConnectionString);
var db = server.GetDatabase(DBName);
var collection = db.GetCollection<T>(typeof(T).Name);
var value = collection.FindOneById(id);
server.Disconnect();
return value;
}
Это прекрасно работает:
var wu = WebUser.single(1);
wu.Session.Add("string key", "value");
wu.Session.Add("int key", 1);
wu.Save();
wu = WebUser.single(1);
Вот где я получаюошибка:
var wu = WebUser.single(1);
wu.Session.Add("list of values", new List<string>() { "yada", "yada 2", "yada 3" });
wu.Save();
//deserialize error on the retrieve below
wu = WebUser.single(1);