需要使用实体框架非常快速地记录数据

时间:2017-06-26 15:39:35

标签: c# entity-framework frameworks entity

我需要开发一个软件来使用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,这可能是因为每次都节省了大量的数据。也许我应该使用缓冲区并一次插入所有内容。

任何消化?提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

任何建议

使用缓冲区并一次插入所有内容。

绝对缓冲读数。作为进一步优化,您可以绕过SaveChanges()(执行逐行插入)并使用TVP或SqlBulkCopy将批量插入SQL Server。