C# DBContext多线程

C# DBContext多线程,c#,multithreading,visual-studio-2010,loops,dbcontext,C#,Multithreading,Visual Studio 2010,Loops,Dbcontext,我在VS2010中建立了一个网站,它使用MVC3(Razor) 我使用DBContexts访问数据库,我的连接字符串是: <add name="SystemDBContext" connectionString="Data Source=|DataDirectory|System.sdf" providerName="System.Data.SqlServerCe.4.0" /> 我的一个控制器的一部分: public class myController : Controller

我在VS2010中建立了一个网站,它使用MVC3(Razor)

我使用DBContexts访问数据库,我的连接字符串是:

<add name="SystemDBContext"
connectionString="Data Source=|DataDirectory|System.sdf"
providerName="System.Data.SqlServerCe.4.0" />
我的一个控制器的一部分:

public class myController : Controller
{
    private SystemDBContext db = new SystemDBContext();


    public ViewResult Index()
    {
        var engines = db.Engines.Include(e => e.state);
        return View(engines.ToList());
    }
    ...
我的循环看起来像这样:

public class Manager
{
    public void Start()
    {
        while (true)
        {
            SystemDBContext db = new SystemDBContext();
            var query = from ...
        }
        ...
这样做的最佳实践是什么?我一直在考虑单例、锁或同步锁,调整连接字符串以允许多个附加到数据库文件,或者让我的循环请求一个执行更新的网页

有什么想法吗

似乎发生的是循环使用DBContext并锁定db文件,然后 无论何时尝试从网站本身的DBContext进行更改,该文件都处于使用中

回到阅读文档?它说WinCE不是多线程服务器的部分。请改用SQL Server-。CE用于有限的可扩展性项目,单线程访问

这样做的最佳实践是什么

使用合适的数据库服务器。CE存在严重问题,尤其是如果您一直启动/停止数据库引擎,这会导致大量低效的磁盘访问

SQL Server就是为了这个目的而做的,正如我所说的,Express很便宜

似乎发生的是循环使用DBContext并锁定db文件,然后 无论何时尝试从网站本身的DBContext进行更改,该文件都处于使用中

回到阅读文档?它说WinCE不是多线程服务器的部分。请改用SQL Server-。CE用于有限的可扩展性项目,单线程访问

这样做的最佳实践是什么

使用合适的数据库服务器。CE存在严重问题,尤其是如果您一直启动/停止数据库引擎,这会导致大量低效的磁盘访问


SQL Server就是这样做的,正如我所说,Express很便宜。

循环线程是创建一次DBContext并将其挂起,还是只在特定工作单元需要时创建一个?你能告诉我DBContext是在哪里创建的吗?我忘了把它放在原来的帖子里,我现在把它放进去了。循环使用一个新的上下文重复对数据库进行极性处理。循环线程是创建一次DBContext并将其挂起,还是只在特定工作单元需要时创建一个DBContext?你能告诉我DBContext是在哪里创建的吗?我忘了把它放在原来的帖子里,我现在把它放进去了。循环使用一个新的上下文重复对数据库进行极性处理。注意到连接字符串中的SqlServerCe.4.0,这是一个很好的发现。而且SQL Express的大小限制比CE的限制要小。(分别为10GB和4GB)感谢您的快速响应。我在我的机器上安装了SQL Express 10.0.5500,并且在过去使用过它。如果我更改了连接字符串,那么CF方法应该构建数据库,对吗?我尝试了以下操作,但在运行时出错,它无法连接到SQL Server。那么,请正确设置它-抱歉,没有执行太多express;)我结束了这个,它似乎已经创建了我的数据库OK。我将看看是否可以强制进行多线程访问,并看看它是否有效。注意连接字符串中的SqlServerCe.4.0很好。另外,SQL Express的大小限制没有CE那么严格。(分别为10GB和4GB)感谢您的快速响应。我在我的机器上安装了SQL Express 10.0.5500,并且在过去使用过它。如果我更改了连接字符串,那么CF方法应该构建数据库,对吗?我尝试了以下操作,但在运行时出错,它无法连接到SQL Server。那么,请正确设置它-抱歉,没有执行太多express;)我结束了这个,它似乎已经创建了我的数据库OK。我要看看我是否可以强制多线程访问,看看它是否有效。
public class Manager
{
    public void Start()
    {
        while (true)
        {
            SystemDBContext db = new SystemDBContext();
            var query = from ...
        }
        ...