从DataContext返回动态列表

本文关键字:列表 动态 返回 DataContext | 更新日期: 2023-09-27 18:05:56

我有以下函数用于报告目的。基本上,客户端希望查看特定表中最近的前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数据读取器,动态读取列和行;但我想知道是否有任何方法从实体框架检索动态列表?然后我可以绑定到JSON GridView阅读器?

从DataContext返回动态列表

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

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

从错误处理的角度来看,这也会更安全一些,因为你会得到一个不存在/无效表的异常,而不是让db服务器告诉你一个错误。

参见如何获取基于名称

的属性值