将C#对象映射到BsonDocument

14

我相对来说对MongoDB比较新手。我有一个对象,其定义如下:

[BsonDiscriminator("user")]
public Class BrdUser
{
    [BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
    public string ID { get; set; }

    [BsonElement("username")]
    public string UserNm { get; set; }

    [BsonElement("email")]
    public string EmailAdrs { get; set; }
    .
    .
    .
    public IList<Question> Questions{ get; set; } //<-- Un sure as to what Bson type should this be
}

如果 Questions 是另一个定义为 BsonDocument 的变量:

[BsonDiscriminator("userques")]
public class Question
{
    [BsonId(IdGenerator = typeof(StringObjectIdGenerator))]
    public string ID { get; set; }

    [BsonElement("title")]
    public string Title{ get; set; }

    [BsonElement("desc")]
    public string Desciption{ get; set; }
}

我的问题是在映射时应该使用哪个属性,以便用户对象与问题对象反序列化。在C#驱动程序中没有[BsonDocument]属性。


你尝试过序列化对象吗?结果是什么? - Saleem
我的问题是给IList<Question>什么属性。 - progrAmmar
2个回答

23
我不确定你卡在哪里了,但是尝试一下:
var brdDoc = new BrdUser ();
brdDoc.UserNm = "invisible";
brdDoc.EmailAdrs = "someone@womewhere.com";
brdDoc.Questions = new []{ new Question{ Title = "Q", Desciption = "Question to ask" } };

var bsonDocument = brdDoc.ToBsonDocument ();
var jsonDocument = bsonDocument.ToJson ();

Console.WriteLine (jsonDocument);

它将打印:

{ 
   "_id" : null, 
   "username" : "invisible", 
   "email" : "someone@womewhere.com", 
   "Questions" : [{ "_id" : null, "title" : "Q", "desc" : "Question to ask" }] 
}

抱歉回复晚了,我的问题是关于问题列表将会被赋予什么属性?它会是[BsonElement]还是其他什么? - progrAmmar
你不必使用属性。尝试按原样使用即可。 - Saleem

0

这两个对我有用... 使用 MongoDB.Driver; 使用 MongoDB.Bson;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接