Ath*_*ari 7 .net c# multithreading entity-framework sql-server-ce
实体框架不允许在多个数据库上下文之间共享同一实体.因此,我必须在GUI应用程序中使用一个数据库上下文(无论是WPF还是WinForms),因为实体需要相互交互.
SQL Server Compact不允许在多个线程之间共享相同的数据库连接.如果我尝试在一个线程上创建连接并在另一个线程上运行SQL查询,我的应用程序可能会崩溃.
因此,我必须在一个线程上创建EF数据库上下文并在该线程上运行所有查询.我已经使用了GUI线程,因为几乎所有查询都非常快.但是,现在我的查询速度很慢,并希望在执行时显示动画进度条.
但是我不能这样做,因为如果我在不同的线程上运行查询,我的应用程序会崩溃.此外,即使没有涉及SQL CE,如果我同时运行多个查询,EF似乎也会抱怨.将所有查询移动到另一个线程,用疯狂的async/await,回调,锁和其他线程内容覆盖所有代码听起来也很可怕,因为我想在可能的情况下保持代码简单.
问题:在多线程GUI应用程序中使用EF数据库上下文和SQL Server Compact的正确方法是什么?有没有办法将单个查询卸载到不同的线程而不会使整个应用程序异步,即有一种简单的方法吗?
归档时间: |
|
查看次数: |
833 次 |
最近记录: |