我正在编写一个通用方法,像数据访问层一样使用C#.Net将文档插入到MongoDB中。我的方法如下所示。这里的集合是从MongoDB检索的MongoCollection。
public async T Create(T entity){
await Collection.InsertOneAsync(entity);
}
我想返回插入的实体或其由MongoDB自动生成的ID。InsertOneAsync方法正在返回任务。我尝试如下进行更改。但是它的返回类型是无效的。
Collection.InsertOneAsync(entity).GetAwaiter().GetResult();
有没有一种方法可以使用InsertOneAsync方法获取ID或实体。我正在为C#使用MongoDB驱动程序。
如果文档未指定_id字段,则MongoDB将添加_id字段并在插入之前为文档分配唯一的ObjectId。大多数驱动程序会创建一个ObjectId并插入_id字段,但如果驱动程序或应用程序未创建,则mongod将创建并填充_id。
在这种情况下,您可以手动生成ObjectId并从方法中返回它们(使用ObjectId.GenerateNewId()
),也可以返回整个对象,因为如果使用[BsonId]
attribute,则MongoDB驱动程序会设置正确的_id值
public async Task<T> Create(T entity) where T:class
{
await Collection.InsertOneAsync(entity);
return entity;
}
并传递如下类型的参数:
public class MyClass
{
[BsonId]
public ObjectId Id { get; set; }
//other properties
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句