0

我有一个应用程序,我需要多次查询 SQL Server CE 数据库,通常是针对相同的数据。数据库有很多表,打算以后增加表的数量,所以没有修复。

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

我正在考虑一个DataTable,但我有很多桌子,所以这不起作用。

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

还有其他解决方案吗?

4

1 回答 1

0

我最终解决它的方式如下。

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

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

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

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

                   return dictionary[tableName];
            }

    }

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

该解决方案适用于我的情况,但作为通用解决方案可能过于具体。

于 2013-04-06T17:03:23.480 回答