我正在尝试通过 ASP.NET MVC 4 中内置的 REST api 检索 MongoDB 集合中的所有文档,当我输入 localhost:50491/api/document 时遇到错误:
反序列化 Acord_Rest_API.Models.Document 类的 Id 属性时出错:无法从 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; }
}