从DataContext返回动态列表

时间:2015-08-03 02:35:49

标签: c# entity-framework

我有以下功能用于报告目的。基本上,客户希望查看特定表中的前100行。 我试图从SqlQuery函数返回List<dynamic>,并返回100个对象。但问题是当我将这个列表序列化为JSON时,我得到了空对象的完整列表。

public IList<object> GetTableContents(string tableName)
        {
            using (Context)
            {
                string query = string.Format("select top 100 * from {0} order by createDate desc",tableName);
                List<dynamic> objects = Context.Database.SqlQuery<dynamic>(query).ToList();
                return objects;
            }
        }

我下面是空数组。

JsonConvert.SerializeObject(objects)

我知道我可以使用ADO.NET数据读取器动态读取列和行, 但我想知道有没有办法从Entity Framework中检索动态列表?然后我可以将它绑定到JSON GridView阅读器?

1 个答案:

答案 0 :(得分:0)

如果您使用数据库第一种方法,一种可能的选择是使用反射根据表名从上下文中查找Entity对象,而不是在上下文本身上使用sql查询。

context.GetType().GetProperty(tableName).GetValue(context, null);

这也可能比错误处理更加安全,因为你会得到一个非存在/无效表的异常,而不是让db服务器告诉你错误。

请参阅How to get a property value based on the name