我(似乎)无法从处理程序(按下按钮)写入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:将它从处理程序中取出并放入它自己的类中使它工作。尽管如此,仍然没有任何线索。
答案 0 :(得分:0)
这可能是您的Mongo司机吞咽异常。可以为不同的操作指定不同的写入关注点,最低的关注点可以吞噬所有操作。
尝试calling getLastError()
(或C#等价物 - 我来自Java世界),看看出了什么问题。
对Java的编写问题详细here。