Ken*_*Qiu 9 c# mongodb mongodb-.net-driver
我在我的测试项目中使用官方mongodb驱动程序用于c#,我已经将文件从c#web应用程序插入mongodb.在mongo控制台中,db.blog.find()可以显示我插入的条目.但是当我试图检索它们时,.net会抛出异常
"System.InvalidOperationException:只有在CurrentBsonType为String时才能调用ReadString,而不能在CurrentBsonType为ObjectId时调用."
我的实体类很简单
namespace MongoDBTest
{
public class Blog
{
public String _id
{
get;
set;
}
public String Title
{
get;
set;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的检索代码
public List<Blog> List()
{
MongoCollection collection = md.GetCollection<Blog>("blog");
MongoCursor<Blog> cursor = collection.FindAllAs<Blog>();
cursor.SetLimit(5);
return cursor.ToList();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我吗?谢谢!
And*_*ich 10
我想你只需要标记你的博客ID BsonId(并自己插入id)属性:
public class Blog
{
[BsonId]
public String Id {get;set;}
public String Title{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
一切都应该没问题.问题是因为您没有标记Mongodb _id和驱动程序生成的带有ObjectId类型的_id字段的字段.当驱动程序尝试反序列化它时,他无法将ObjectId转换为String.
完整的例子:
MongoCollection collection = md.GetCollection<Blog>("blog");
var blog = new Blog(){Id = ObjectId.GenerateNewId().ToString(),
Title = "First Blog"};
collection .Insert(blog);
MongoCursor<Blog> cursor = collection.FindAllAs<Blog>();
cursor.SetLimit(5);
var list = cursor.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31827 次 |
| 最近记录: |