来自不同线程的同时数据访问

时间:2017-05-29 12:55:42

标签: c# sql-server multithreading winforms entity-framework

您好我正在开发一个WinForms应用程序,它使用带有EF的LocalDb进行数据访问。 到目前为止,我的WinForms应用程序中的数据库访问只能一次执行一次,只需调用:

using (var context = new EfDbContext())
{
     // do something on context entities
}

需要时。

现在我面临一个新的要求 - 我需要创建一个额外的后台服务,用于定期从位于某些FTP服务器上的文件中获取数据,然后 - 在此SQL LocalDb中更新/插入新数据。

我想要实现的是同时访问WinForms应用程序和这个新的后台应用程序(服务)的SQL LocalDb数据,这样用户就可以从Db查看数据(在WinForm应用程序中) ),同时在后台(由服务)执行数据更新。

我想省略彼此阻塞的资源。

可以做到(以及如何做到)? 谢谢!

更新:我忘了提到将从ftp文件中读取然后插入数据库的数据集可能非常大~20-50k的记录,每个记录包含十进制字段,DateTimeOffset字段和少数Int32字段

1 个答案:

答案 0 :(得分:1)

只需使用它,现在就不用担心并发问题。 SQL Server广泛用于高度并发的应用程序,如ASP.NET Web Apps,您的示例并不是那么特别。使用具有写入操作的事务时,阻塞可能是一个问题。但是有很多Transaction isolation levels来解决这个问题,而且我认为这对你的任务来说无关紧要