2016-04-30 2 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, Contact []>', потому что это не делегат типа.

+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