3

古い .Net API バージョン:

MongoClient client = new MongoClient();
var server = client.GetServer();
var db = server.GetDatabase("foo");
var collection = db.GetCollection<BsonDocument>("bar");
var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
collection.Save(document);

出来た。

新しい .Net Driver 2.0 を使用する場合:

var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("foo");
var collection = database.GetCollection<BsonDocument>("bar");

var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
await collection.InsertOneAsync(document);

エラー : 'await' 演算子は非同期メソッド内でのみ使用できます。このメソッドを「async」修飾子でマークし、戻り値の型を「Task」に変更することを検討してください。

参照 :

2.0 .NET ドライバーの紹介

読み書き

.Net Driver 2.0 を使用して新しいドキュメントを挿入する方法を知りたいです。ありがとう。

[更新 1] 実装してみました:

public class Repository
{
    public static async Task Insert()
    {
        var client = new MongoClient("mongodb://localhost:27017");
        var database = client.GetDatabase("foo");
        var collection = database.GetCollection<BsonDocument>("bar");

        var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
        await collection.InsertOneAsync(document);
    }
}

static void Main(string[] args)
{            
       Task tsk = Repository.Insert();
       tsk.Wait();
       Console.WriteLine("State: " + tsk.Status);            
}

結果: アクティブ化を待っています。データベースで何も変更されていません。私を助けてください!

[アップデート2 (解決済み)] : tsk.Wait(); を追加 出来た !この投稿に感謝します:非同期タスクメソッドを同期的に実行するにはどうすればよいですか?

4

4 に答える 4

3

あなたの方法は次のようになるはずです

 public async void Insert()
    {
         var client = new MongoClient("mongodb://localhost:27017");
        var database = client.GetDatabase("foo");
        var collection = database.GetCollection<BsonDocument>("bar");

        var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
        await collection.InsertOneAsync(document);

    }
于 2015-04-13T07:01:50.477 に答える
2
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("foo");
var collection = database.GetCollection<BsonDocument>("bar");

var document = new BsonDocument { { "_id", 1 }, { "x", 2 } };
Task task = collection.InsertOneAsync(document);
task.Wait();

// これ以降、レコード/ドキュメントは MongoDB にある必要があります。

于 2015-10-29T10:15:22.173 に答える
0

MongoDB C# ドライバー メタ ファイルで、すべての関数がキーワードasyncによって必要とされずに宣言されていることがわかります。await

エラー : 'await' 演算子は非同期メソッド内でのみ使用できます。このメソッドを「async」修飾子でマークし、戻り値の型を「Task」に変更することを検討してください。

awaitキーワードを削除するだけです。わたしにはできる

于 2015-09-18T09:57:41.767 に答える