我写了这样一个静态类来生成智能实体:

public static class DBHelperExtension
{public static List<Dictionary<string, string>> FillEntities(string sql, DbContext dbContext, object inputParams){if (dbContext.CurrentCommand == null){dbContext.CreateCommand(sql, CommandType.Text);}var pattern = @"@(\w+)";MatchCollection collections = Regex.Matches(sql, pattern, RegexOptions.IgnoreCase);foreach (System.Text.RegularExpressions.Match str in collections){System.Data.SqlClient.SqlParameter parameter = new System.Data.SqlClient.SqlParameter(str.Value.Substring(1), DBNull.Value);dbContext.CurrentCommand.Parameters.Add(parameter);}IDictionary dictionary = inputParams as IDictionary;if (dictionary != null){foreach (DbParameter parameter2 in dbContext.CurrentCommand.Parameters){if ((parameter2.Direction == ParameterDirection.Input) || (parameter2.Direction == ParameterDirection.InputOutput)){parameter2.ParameterName = parameter2.ParameterName.Substring(1);parameter2.Value = dictionary[parameter2] ?? DBNull.Value;}}}else{PropertyInfo[] propertys = inputParams.GetType().GetProperties();foreach (PropertyInfo p in propertys){if (dbContext.CurrentCommand.Parameters.Contains(p.Name)){if (p.GetValue(inputParams, null) != null)dbContext.CurrentCommand.Parameters[p.Name].Value = p.GetValue(inputParams, null);elsedbContext.CurrentCommand.Parameters[p.Name].Value = DBNull.Value;}}}List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();if (dbContext.Connection.State == ConnectionState.Closed){dbContext.Connection.Open();}DbDataReader dbDataReader = dbContext.CurrentCommand.ExecuteReader();while (dbDataReader.Read()){Dictionary<string, string> dictionary2 = new Dictionary<string, string>();int ordinal = 0;while (ordinal < dbDataReader.VisibleFieldCount){string name = dbDataReader.GetName(ordinal);object obj = dbDataReader.GetValue(ordinal);dictionary2.Add(name, obj.ToString());checked { ++ordinal; }}list.Add(dictionary2);}dbDataReader.Close();return list;}
}

然后这样调用:

var list = DBHelperExtension.FillEntities(sql, dbContext, new {PageSize = 0});

return list.ToJSON();   //返回:  [{"ProductName":"三星9300" , "Unit" : "台"} , {"ProductName":"三星9100" , "Unit" : "台"}]

转载于:https://www.cnblogs.com/tinaleft/archive/2013/02/20/2918082.html

用ClownFish返回智能实体相关推荐

  1. Mybatis: 返回不同实体(对象数组)

    现在有这样一个需求:我这里有20个表名,然后随便选一个,你给我到这个所选的表里面把所有数据给我拿回来.之前的话我们都是有一个确定的表名,根据这个表创建一个实体类,当返回数据时,把resultTyoe设 ...

  2. 搜索场景下的智能实体推荐

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 [免费下载]2022年2月份热门报告盘点 知识图谱在美团推荐场景中的应用实践 机器学习在B站推荐系统中的应用实践 ...

  3. Mybatis:基于注解形式,传入List,返回List实体

    1)现在的需求是: 传入一个List<String>,返回查询到的List<Entity> 基于注解形式,我们采用in语句筛选. 2)现在的需求是: 传入一个List<S ...

  4. c++ 返回智能指针_C++核心指南(17) I.11 禁止使用指针(T*)或引用(T)来转移所有权...

    I.11: 永远不要使用原始指针(T*)或引用(T&)来转移所有权 原因 如果对调用者或被调用者是否拥有对象有任何疑问,就会发生泄漏或过早析构. 示例 考虑: X* compute(args) ...

  5. Spring Jpa 返回自定义实体

    非常曲折,今日终于成功了,分享下. 场景:返回用户的信息列表,包含角色名称.(用户表只有角色表的ID) 实现: 方法一: @Transient 查了很多资料,有的说加到实体类上,有的说加到属性上,有的 ...

  6. jpa 原生sql 查询返回一个实体_spring data系列之jpa

    Springdata 系列之spring data jpa 背景:随着互联网技术的发展,现在的企业开发中用到的用于数据存储的产品,不再仅仅是关系型数据库,而是要根据场景需要选择不同的存储技术,比如用于 ...

  7. 原生sql 查询返回一个实体_python连接SQLServer执行给定的查询SQL语句,并返回结果数据...

    今天写这篇文章的初衷就是在我昨天发表的文章<Python连接SQLServer数据库执行增删改查操作>后,一些读者反馈说跟Python完全没有关系,这里我想说的是:内容的确是与Python ...

  8. jpa 原生sql 查询返回一个实体_JPA查询--使用原生sql 并且把查询结果转为实体对象...

    这篇文章主要记录 使用原生sql查询 并且把查询结果转为实体对象, 注意:这儿使用的数据库 是oracle数据库 这儿记录了三种查询:精确查询,模糊查询,分页查询. 1.把原生sql查询的结果转为实体 ...

  9. 统一返回码,返回结果实体类

    统一返回码:  package com.ihrm.common.entity;public enum ResultCode {SUCCESS(true,10000,"操作成功!") ...

最新文章

  1. 使用×××版软件中常见的一些错误代码
  2. 一行代码快速搞定Flowable断点下载(中)
  3. 2层框架结构柱子间距_2分钟掌握五种不同类型的厂房结构,找厂房少绕弯!
  4. 数据库连接oracle 10g rman 备份与恢复 之一
  5. 计算机网络之传输层:2、UDP协议
  6. SQLCE 3.5 部署打包
  7. was日志报检测到cpu饥饿
  8. 各地的公安接口的配置说明书
  9. 对 “悟空拼音”学习软件的教学过程优化分析
  10. workman 和swoole 区别
  11. 艺术字体如何设计呢?如何进行简体和繁体的改造?
  12. Protel 99 SE使用心得
  13. 临近年关,为何越来越多的程序员不愿回家,带你盘点那些程序员最怕的几件事
  14. facsum (线性筛 积性函数)
  15. uva 10118(DP)
  16. 硬核科普:什么是拓扑?
  17. API `getFileSystemManager` is not yet implemented uni-app 图片转码解决方法
  18. matlab里H是什么,matlab 中 hObject和handles区别
  19. 三自由度机器人运动学matlab仿真实验报告,3自由度机器人的正运动学建模研究...
  20. LC tank 在RF放大器中的作用

热门文章

  1. pthread_key_create函数
  2. 拼接 字符串使用 Lambda 表达式
  3. Redis实现分布式缓存
  4. 正则表达式之贪婪匹配与非贪婪匹配
  5. H5中判断手势左滑右滑
  6. h5聊天页面 jquery_HTML5仿微信聊天界面、微信朋友圈实例
  7. win7下解决Wow“连续未响应”debuff方案
  8. 瑞吉外卖:linux课程学习
  9. Python之reverse函数
  10. 北理工研究团队在脑-控移动机器人上取得重要进展