Как вы используете Update.Set () со свойством типа List <> в MongoDB (c #)? - PullRequest
0 голосов
/ 15 марта 2012

У меня есть класс, как

 class RiskAlertSettings
{
    public object _id { get; set; }
    public string UserName { get; set; }
    public List<RiskAlertType> Alert { get; set; }
    public string EmailList { get; set; }
    public string SMTPClient { get; set; }
    public string SMSList { get; set; }
    public string SoundType { get; set; }
}

Я успешно вставил данные. Но при обновлении я получаю сообщение об ошибке. Мой запрос

riskAlertSettings.Update(Query.EQ("UserName", settings.UserName), Update.Set("Alert",settings.Alert));

Я получил ошибки как

The best overloaded method match for 'MongoDB.Driver.Builders.Update.Set(string, MongoDB.Bson.BsonValue)' has some invalid arguments    

не может конвертировать из 'System.Collections.Generic.List' в 'MongoDB.Bson.BsonValue'

Может ли помочь в этом?

Ответы [ 2 ]

0 голосов
/ 10 июня 2012

Вы можете использовать SetWrapped<T>(name:String, value:T) в классе MongoDB.Driver.Builders.Update. Тогда вам не нужно создавать BsonArray специально для сценариев обновления.

0 голосов
/ 16 марта 2012

Вам просто нужно преобразовать ваш список в тип Bson, скорее всего, в массив.Таким образом, просто оберните

new BsonArray(settings.Alert)

вокруг вашего списка.

riskAlertSettings.Update(Query.EQ("UserName", settings.UserName), 
    Update.Set("Alert",new BsonArray(settings.Alert)));

Класс BsonArray находится в пространстве имен MongoDB.Bson.

...