2012-10-12 10 views
5

MongoDB C#ドライバでいくつかの更新文を作成しています。 The C# APIには、Builder名前空間にラップされたメソッドと「ラップされていない」メソッドの両方が含まれています。MongoDB C#ドライバの使用:ラップされているか、ラップされていませんか?

これらは、ジェネリックで異なり、BSONラッパーを使用する必要がないようです。しかし、どちらのメソッドタイプでも、Bson-Wrapped以外のパラメータで渡すことができます。 2つの機能に違いはありますか? (ドライバV1.2を使用して)例えば

、ここUpdate.Setの2つの使用法は次のとおりです。

var myCollection = database.GetCollection<MyObject>(typeof(MyObject).Name); 

myCollection.Update(
    Query.EQ("_id", myId), 
    Update.Set("Message", "My message text")); 

// And now the same call with "Wrapped" method 
myCollection.Update(
    Query.EQ("_id", myId), 
    Update.SetWrapped("Message", "My message text")); 

これらの二つの呼び出しの違いは何ですか?構文的砂糖だけの場合 - ラップされたバージョンの必要性

答えて

5

文字列値を設定しても差はありません。複雑な型(クラス、リストなど)で作業する場合は、ラップされたメソッドが必要です(これはBsonValueではありません)。彼らはオブジェクトをBsonValue型に正しく変換するだけです。

小さな例:これで終わりです

var item = new MyDemo(); 
Update.SetWrapped("Item", item) 

var item = new MyDemo(); 
Update.Set("Item", item) 

あなたはラップ法やToBsonDocument()拡張子を使用する必要があります。あなたは次の操作を行うことはできませんセットで

メモ、ドライバとmongodbのほとんどの部分はオープンソースです。だから、look atに大きな問題ではありません:)

+0

+1オープンソースのリマインダです。私はいつもそのことを忘れています。 – SethO

関連する問題