Я пытаюсь удалить все документы в моей коллекции MongoDB через REST api, встроенный в ASP.NET MVC 4, и я столкнулся с ошибкой при вводе localhost: 50491 / api / document:
Ошибка при десериализации свойства Id класса Acord_Rest_API.Models.Document: невозможно десериализовать строку из BsonType ObjectId.
Мой контроллер выглядит так:
public class DocumentController : ApiController
{
public readonly MongoConnectionHelper<Document> docs;
public DocumentController()
{
docs = new MongoConnectionHelper<Document>();
}
public IList<Document> getAllDocs()
{
var alldocs = docs.collection.FindAll();
return alldocs.ToList();
}
}
Мой документ MongoDB выглядит так?
Что мне здесь не хватает?
Мой класс, который подключается к БД:
public class MongoConnectionHelper<T> where T: class
{
public MongoCollection<T> collection { get; private set; }
public MongoConnectionHelper()
{
string connectionString = "mongodb://127.0.0.1";
var server = MongoServer.Create(connectionString);
if (server.State == MongoServerState.Disconnected)
{
server.Connect();
}
var conn = server.GetDatabase("Acord");
collection = conn.GetCollection<T>("Mappings");
}
}
ИЗМЕНИТЬ вот мое решение:
MongoConnectionHelper выполняет соединение с БД, DocumentController имеет методы для извлечения всех документов, а Document содержит то, что вы предложили в своем ответе.
ИЗМЕНИТЬ вот класс документа:
[DataContract]
public class Document
{
public ObjectId _id { get; set; }
[DataMember]
public string MongoId
{
get { return _id.ToString(); }
set { _id = ObjectId.Parse(value); }
}
public IList<string> alldocs { get; set; }
}