我需要从sql数据库缓存内存中的一些查找表。我有数百个。表格非常简单,具有以下结构。
Tablename= "l_lookupobjectname"
column1Name: ID
Column2Name: Code
代码主要是一个字符串,但在少数情况下也可以是整数。
我使用实体框架,并希望以通用的方式将这些表加载到我的Web应用程序内存中。我不想通过指定其名称来单独加载每个表。
我正在考虑列出dictionary<in id, dynamic code>
。
我的问题是:
如何生成数据访问代码,将所有数据提取到我的字典列表,而不必为所有数百个表编写重复代码。 “选择ID,来自所有表的代码”而不是为每个表调用此语句。
我并不关心缓存数据的代码。这非常简单。
答案 0 :(得分:2)
您的问题可能是类型,除非您声明所有内容都是字符串或对象(并根据需要进行转换)。
除了使用一些嵌套字典之外,似乎是最好的选择。您可以构建SQL查询("select * from {0}"
),并只提供表列表。然后将每一个读成字典。
您可以使用DataSet
,但这非常麻烦。可能SqlDataReader
可能更好。
您可以通过以下方式从中获取列名称:
var reader = cmd.ExecuteReader();
var columns = new List<string>();
for(int i=0;i<reader.FieldCount;i++)
{
columns.Add(reader.GetName(i));
}
然后将它全部读作字符串或对象。