将SQL Server CE数据库加载到内存中

时间:2013-04-06 16:33:57

标签: c# sql-server-ce

我有一个应用程序,我需要多次查询SQL Server CE数据库,通常是相同的数据。该数据库有许多表,有意在将来增加表的数量,所以没有任何修复。

这个过程非常慢,所以我需要一种方法将整个数据库转储到内存中,并在那里执行查询。查询都非常简单(与从表Y中获取id为X的记录相同)。

我正在考虑一个DataTable,但我有很多桌子,所以无法使用。

我也在考虑使用LINQ,但是每个表都非常不同,我不想每次都手写一个新对象(并且.dbml文件不能与SQL Server CE一起使用 - 如图所示)。

还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

我最终解决的方法如下。

我保留了一个将表名映射到DataTables的字典。

每当我尝试访问DataTable时,我会搜索该名称是否在字典中。

public static DataTable GetDataTable(string tableName)
    {
            lock (lockMe)

            {
                    if (!dictionary.Keys.Contains(tableName))
                    {
                        ReadTableIntoMemory(tableName);
                    }

                   return dictionary[tableName];
            }

    }

如果它们不存在,我懒洋洋地将整个表读入内存(使用select *和数据表)并将其添加到字典中。

此解决方案适用于我的情况,但它可能过于具体而不是一般解决方案。