2017-05-29 34 views
0

嗨,我正在开发一个WinForms应用程序,它使用LocalDb与EF进行数据访问。在需要的时候来自不同线程的同时数据访问

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

: 到目前为止,在以下的时间进行我的WinForms应用程序的数据库访问只有一次,只要通过唤起。

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

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

我想省略阻塞对方的资源。

可以这样做(以及如何做到这一点)? 谢谢!

更新:我忘了提及将从ftp文件读取然后插入到数据库中的数据集可能相当大〜20-50k记录,每个记录由十进制字段,DateTimeOffset字段和少数Int32组成领域。

+1

什么都试过了吗?例如,只是尝试,如果它已经工作? –

+1

SQL Server本质上是一个多用户RDBMS。这包括LocalDB。事实上,你会很难找到比SQL Server更好地处理并发的事情。 –

+0

@FelixD。我还没有尝试任何东西,我正在阅读它,只需要知道它是否可以实现,或者我需要切换到SqlServer并付费。 – pitersmx

回答

1

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