2016-07-15 53 views
1

我需要从sql数据库中缓存内存中的一些查找表。我有数百个。这些表格非常简单,具有以下结构。使用C#Dynamic来简单地访问数据

Tablename= "l_lookupobjectname" 

column1Name: ID 
Column2Name: Code 

代码主要是一个字符串,但也可以在少数情况下一个整数。

我使用实体框架,并希望通用的方式将这些表加载到我的Web应用程序内存中。我不想通过指定其名称来单独加载每个表。

我正在考虑列出dictionary<in id, dynamic code>

我的问题是:

如何生成数据访问代码,将拉动所有数据,以我的字典的名单,而无需编写重复的代码为我所有数百台。 “选择ID,所有表中的代码”而不是为每个表调用此语句。

我不关心缓存数据的代码。这是相当微不足道的。

+0

这看起来很宽泛。你能缩小一个单一的问题并提出一个问题吗?我们不会去做你的工作......马布耶你只是不好的解释你的问题?你是不是泛型 - 而不是动态?阅读[mcve] – Mafii

+0

刚刚添加了一些说明。寻找一种通用的方法来从所有表格中选择 –

+0

您是否有所有表格的列表?字符串,对象等? – Mafii

回答

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)); 
} 

,然后就看它的所有字符串或对象。