MongoDB не получает вставку / сохранение при вызове из обработчика - PullRequest
0 голосов
/ 12 марта 2012

Я (похоже) не могу записать в mongoDB из обработчика (нажатие кнопки).Если я удаляю код и запускаю его в консольном приложении в Main, он работает ...

Вот класс

class TimeRegistration
{
    public ObjectId _id { get; set; }
    public string Name { get; set; }
    public DateTime Date { get; set; }
    public string Project { get; set; }
    public string Werk { get; set; }
    public string Shot { get; set; }
    public double Uren { get; set; }
    public string Opmerkingen { get; set; }

}

А вот тело обработчика кнопки

private void buttonLog_Click(object sender, EventArgs e)
{
    string connectionString = "mongodb://localhost";
    MongoServer server = MongoServer.Create(connectionString);
    MongoDatabase db = server.GetDatabase("timeregistration");

    var logs = db.GetCollection<TimeRegistration>("logs");

    foreach( DataGridViewRow dgRow in dataGridViewLog.Rows)
    {
        if (dgRow.Cells[0].Value == null) continue;

        TimeRegistration log = new TimeRegistration();

        log.Name = Environment.UserName;
        log.Date = dateTimePickerLog.Value;

        if (dgRow.Cells[0].Value != null) log.Project       = dgRow.Cells[0].Value.ToString();
        if (dgRow.Cells[1].Value != null) log.Werk          = dgRow.Cells[1].Value.ToString();
        if (dgRow.Cells[2].Value != null) log.Shot          = dgRow.Cells[2].Value.ToString();
        if (dgRow.Cells[3].Value != null) log.Uren          = Convert.ToDouble(dgRow.Cells[3].Value);
        if (dgRow.Cells[4].Value != null) log.Opmerkingen   = dgRow.Cells[4].Value.ToString();

        logs.Save(log);//, saveOptions);   
    }
}

Итак, мой вопрос: почему это должно выполняться внутри главной части консольного приложения, а не внутри обработчика кнопки в моем приложении winforms.

Спасибо!

Edit1: я сделалконечно, это не проблема с брандмауэром.

Edit2: если вынуть его из обработчика в отдельный класс, это сработает.Хотя до сих пор не знаю, почему.

1 Ответ

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

Это может быть ваш драйвер Mongo, проглатывающий исключения.Для разных операций можно указывать разные Записать Проблемы, и самая низкая проблема поглощает все.

Попробуйте вызов getLastError() (или эквивалент C # - я из мира Java)чтобы увидеть, что пошло не так.

Подробные сведения о записи для Java здесь .

...