Ara*_*ind 5 .net c# mongodb mongodb-csharp-2.0
我正在编写一个通用方法,就像数据访问层一样,使用 C# .Net 将文档插入到 MongoDB。我的方法如下所示。这里的 Collection 是从 MongoDB 检索的 MongoCollection。
public async T Create(T entity){
await Collection.InsertOneAsync(entity);
}
Run Code Online (Sandbox Code Playgroud)
我想返回插入的实体或其由 MongoDB 自动生成的 ID。InsertOneAsync 方法正在返回一个任务。我尝试如下更改它。但它的返回类型是void。
Collection.InsertOneAsync(entity).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 InsertOneAsync 方法取回 id 或实体。我正在使用 C# 的 MongoDB 驱动程序。
MongoDB 中的 Id 是在客户端生成的。
如果文档没有指定 _id 字段,那么 MongoDB 将在插入之前添加 _id 字段并为文档分配唯一的 ObjectId。大多数驱动程序都会创建一个 ObjectId 并插入 _id 字段,但如果驱动程序或应用程序没有这样做,mongod 将创建并填充 _id。
在这种情况下,您可以手动生成 ObjectId 并从您的方法返回它们(使用ObjectId.GenerateNewId())或返回整个对象,因为如果您使用[BsonId]属性,MongoDB 驱动程序将设置正确的 _id 值
public async Task<T> Create(T entity) where T:class
{
await Collection.InsertOneAsync(entity);
return entity;
}
Run Code Online (Sandbox Code Playgroud)
并传递一个类型参数,例如:
public class MyClass
{
[BsonId]
public ObjectId Id { get; set; }
//other properties
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13489 次 |
| 最近记录: |