opennetcf中的多线程.(如何使用SqlCeDataStore)

本文关键字:何使用 SqlCeDataStore 多线程 opennetcf | 更新日期: 2023-09-27 18:05:29

我刚刚开始使用OpenNETCF。ORM框架,我遇到了一个问题。在多线程应用程序中使用SqlCeDataStore的正确方法是什么?

在单线程应用程序中,我将简单地使用静态字段:
public class MyApp
{
    private static SqlCeDataStore _store;
    public static SqlCeDataStore Store
    {
        get {
            if (_store == null) {
                _store = new SqlCeDataStore("database.sdf");
                // other initialization stuff, DiscoverTypes() etc...
            }
            return _store;
        }
    }
}

然后我将像这样使用它:

var customers = MyApp.Store.Select<Customer>().ToArray();
在对SQL Server Compact进行了一些研究后,我发现连接不是线程安全的,所以每个线程都应该有自己的连接。OpenNETCF。ORM有一个选项,每次连接到数据库时使用一个新连接。我应该用这个吗?

另一个选项是为每个线程创建一个新的SqlCeDataStore。这样好点了吗?

正确的方法是什么?

opennetcf中的多线程.(如何使用SqlCeDataStore)

我们在使用OpenNETCF ORM的各种多线程应用程序中使用SQL Compact,没有任何问题。我们在完整的Windows和Windows CE上运行这些程序。

我们使用"维护维护连接"连接行为,其中为所有CRUD调用创建一个新连接,但保留一个单后台连接用于进行维护工作(创建表等)。这提供了良好的性能和合理的线程安全性。