我有一个应用程序,我需要多次查询SQL Server CE数据库,通常是相同的数据。该数据库有许多表,有意在将来增加表的数量,所以没有任何修复。
这个过程非常慢,所以我需要一种方法将整个数据库转储到内存中,并在那里执行查询。查询都非常简单(与从表Y中获取id为X的记录相同)。
我正在考虑一个DataTable
,但我有很多桌子,所以无法使用。
我也在考虑使用LINQ,但是每个表都非常不同,我不想每次都手写一个新对象(并且.dbml
文件不能与SQL Server CE一起使用 - 如图所示)。
还有其他解决方案吗?
答案 0 :(得分:0)
我最终解决的方法如下。
我保留了一个将表名映射到DataTables的字典。
每当我尝试访问DataTable时,我会搜索该名称是否在字典中。
public static DataTable GetDataTable(string tableName)
{
lock (lockMe)
{
if (!dictionary.Keys.Contains(tableName))
{
ReadTableIntoMemory(tableName);
}
return dictionary[tableName];
}
}
如果它们不存在,我懒洋洋地将整个表读入内存(使用select *和数据表)并将其添加到字典中。
此解决方案适用于我的情况,但它可能过于具体而不是一般解决方案。