Skip to main content
 首页 » 编程设计

c#之如何将一个简单的类解析为 Bson 和 MongoDB 集合

2024年02月06日30haluo1

我是 C# 中 MongoDB 的新手。

我创建了一个非常简单的类,我想将其自动插入到集合中。

如果我不想手动映射所有内容,我该怎么做?

public class DummyClass 
{ 
    [BsonId]         
    public int Id { set; get; } 
 
    [BsonElement("first")] 
    public string First { set { _name = value; } } 
 
    [BsonConstructor] 
    public DummyClass() 
    { 
        Id = 2; 
        First = "1"; 
    } 
} 

我曾希望我能做这样的事情:

_dbClient = new MongoClient(); 
_database = _dbClient.GetDatabase("testDB"); 
_collection = _database.GetCollection<BsonDocument>("Collection"); 
 
var doc = BsonDocument.Create(dummy); 
_collection.InsertOneAsync(doc); 

但是这样不好。我得到异常:

System.ArgumentException : .NET type DummyClass cannot be mapped to BsonType.Document.  
Parameter name: value 

有什么建议吗?

我真的不想做:

{ 
    {"Id", "2"}, 
    {"First", "1"}, 
} 

编辑: 我忘了这条小线:

BsonClassMap.RegisterClassMap<DummyClass>(); 

它创造奇迹。

请您参考如下方法:

当集合中的字段与模型类中的属性不匹配时,使用 BsonDocument 是有意义的。否则你应该创建映射到你的类的集合。

_collection = _database.GetCollection<DummyClass>("Collection"); 
await _collection.InsertOneAsync(doc); 

并且不要忘记 MongoDB.Driver 中的 async/await 方法。