我需要开发一个软件来使用PLC监控压力传感器的值,并将值存储在数据库中。问题是我需要每20ms读取一次de值。我使用此代码使用实体框架和SQL保存数据。我使用一个文本框来查看计时器是否可以处理速度并面对SQL
使用文本框进行的记录: 26/06/2017 - 10:46:35.236 26/06/2017 - 10:46:35.256 26/06/2017 - 10:46:35.276 26/06/2017 - 10:46:35.296
private void mmTimer_Tick(object sender, System.EventArgs e)
{
counter++;
lblCounter.Text = counter.ToString();
txtDT.AppendText(DateTime.Now.ToString("dd/MM/yyyy - HH: mm:ss.FFF\n"));
using (DatabaseContext db = new DatabaseContext())
{
storeDataBindingSource.DataSource = db.StoreDataList.ToList();
StoreData objStoreData = storeDataBindingSource.Current as StoreData;
{
var _StoreData = new StoreData
{
DateTime = DateTime.Now.ToString("dd/MM/yyyy - HH: mm:ss.FFF")
};
db.StoreDataList.Add(_StoreData);
db.SaveChanges();
}
}
}
但是,当我查看SQL表时,时间值在每个插入中都不会保持相同的20ms,这可能是因为每次都节省了大量的数据。也许我应该使用缓冲区并一次插入所有内容。
任何消化?提前谢谢。
答案 0 :(得分:0)
任何建议
使用缓冲区并一次插入所有内容。
绝对缓冲读数。作为进一步优化,您可以绕过SaveChanges()(执行逐行插入)并使用TVP或SqlBulkCopy将批量插入SQL Server。