2016-04-30 6 views
0

Mongoのオブジェクトを更新しようとしています。とりわけ、オブジェクト配列が含まれています。他のフィールドは正常に動作しますが、アップデート中に配列を設定する方法を理解することはできません。配列を更新する

var update = new UpdateDefinitionBuilder<MyPost>() 
    .Set(m => m.Title, "Some Title") //works fine 
    .Set(m => m.Contact, myPost.Contacts.ToArray()); //throws compiler error 

コンパイラが吐く:

エラーCS1660:ラムダ式が 型に変換できません 'のFieldDefinition < MyPostを、連絡先[]>' は、デリゲート タイプではないので。

+1

で配列の各要素に追加されますのでご注意配列 'Contact'プロパティですか? –

+0

申し訳ありませんが、私はそれを言及すべきでした。連絡先は配列です、はい。 – Dusda

答えて

0

私はこれが古かったことを認識していますが、私も同様の問題があり、答えをまとめるためにいくつかの検索が必要でした。

var bsonArray = new BsonArray(BsonDocumentWrapper.CreateMultiple(typeof(Contact), myPost.Contacts)); 
var update = new UpdateDefinitionBuilder<MyPost>() 
    .Set(m => m.Title, "Some Title") 
    .Set(m => m.Contacts, bsonArray); 

はちょうどあなたがタイプCreateMultiple(typeof(Contact),..を定義しない場合、フィールド"_t" : "SomeNamespace.Contact"はデシベル

+0

私は同じ問題がありますが、私は解決策を理解していません。 http://stackoverflow.com/questions/39975324/update-an-embedded-field-using-mongodb-and-c-sharp/39993822#39993822 – Juste3alfaz