MVC EF 执行SQL查询,难道要为每一种结果编写一个实体类?

new_new_man 2015-04-27 07:27:48
MVC EF的ExecuteStoreQuery<T> 函数需要一个实体类传进去才能顺利执行查询,而且这个实体类的数据结构必须与查询结果的数据结构完全一致才行,也就是说不同的查询结果数据结构就必须单独为这种结构编写一个实体类,晕,如果有上百种查询结果数据结构那岂不是要编写上百个实体类?这符合软件工程的思想吗?
举例如下:
var peopleViews = db.ExecuteStoreQuery<Table_1>("SELECT * FROM Table_1");//这个是正确的
我尝试过用string或者array来替换那个实体类都不行,
var peopleViews = db.ExecuteStoreQuery<string>("SELECT * FROM Table_1");//这个报错
var peopleViews = db.ExecuteStoreQuery<array>("SELECT * FROM Table_1");//这个报错

请高手指点,如何解决这个问题?
...全文
523 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_new_man 2015-04-28
  • 打赏
  • 举报
回复
谢谢大家!我说的就是复杂的多表联合查询,这种情况是经常出现的,查询的结果数据结构也会存在千差万别的情况,这样的话就很难为每一种查询实现一个实体类了。请大家继续指点,谢谢!
dalianzsl 2015-04-28
  • 打赏
  • 举报
回复
不知道怎么用ExecuteStoreQuery返回匿名的类型,不过你可以通过linq to entity实现你的需求,它支持多表联合查询,可以返回匿名类型的结果。

SELECT * FROM Table_1 join  Table_2....
对应的语句是

var result = from t1 in db. Table_1
             join t2 in db.Table_2.....
             select  new
             {
              t1,
              t2
             }
遍历结果

foreach(var item in result)
{
	item.t1.字段名
	item.t2.字段名
}
详细的用法可以到msdn上查
moonwrite 2015-04-27
  • 打赏
  • 举报
回复
如楼上所说 DB First的情况下 你数据库的每一张表 EF都会帮你生成一个实体类 来满足select * from table 而你所说的db.ExecuteStoreQuery<string> SELECT colName FROM 不可以用* 另外 既然用EF了 这些简单的查询就不要用sql了 用linq 只有很复杂的查询,复杂的linq很难实现 才用ExecuteStoreQuery<T>
  • 打赏
  • 举报
回复
table的实体可以直接映射的啊
zujinsheng 2015-04-27
  • 打赏
  • 举报
回复
那些实体类都可以自动生成..不用你自己编写..
包括源代码、数据库文档、数据库创建SQL脚本。一套基于ASP.NET MVC+EF6+Bootstrap开发出来的框架源代码! 采用主流框架,容易上手,简单易学,学习成本低。可完全实现二次开发、基本满足80%项目需求。 可以帮助解决.NET项目70%的重复工作,让开发更多关注业务逻辑。既能快速提高开发效率,帮助公司节省人力成本,同时又不失灵活性。 支持SQLServer、MySQL、Oracle、SQLite、Access 等多数据库类型。模块化设计,层次结构清晰。内置一系列企业信息管理的基础功能。 操作权限控制精密细致,对所有管理链接都进行权限验证,可控制到导航菜单、功能按钮。 数据权限(精细化数据权限控制,控制到行级,列表级,表单字段级,实现不同人看不同数据,不同人对同一个页面操作不同字段 兼容目前最流行浏览器(IE8+、Chrome、Firefox、360浏览器) 1、前端技术 JS框架:Bootstrap、JQuery CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。 客户端验证:jQuery Validation Plugin。 在线编辑器:ckeditor、simditor 上传文件:Uploadify 数据表格:jqGrid、Bootstrap Talbe 对话框:layer 页面布局:jquery.layout.js 图表插件:echarts、highcharts 2、后端技术 核心框架:ASP.NET MVC5、WEB API 持久层框架:EntityFramework 定时计划任务:Quartz.Net组件 安全支持:过滤器、Sql注入、请求伪造 服务端验证:实体模型验证、自己封装Validator 缓存框架:微软自带Cache、Redis 日志管理:Log4net、登录日志、操作日志 工具类:NPOI、Newtonsoft.Json、验证码
框架使用场景:OA、ERP、BPM、CRM、WMS、TMS、MIS等业务管理系统及后台系统 框架功能: 1.系统管理 机构管理、角色管理、岗位管理、用户管理、数据字典、区域管理 2.权限管理 系统菜单、系统按钮、角色权限分配 3.系统安全 数据备份、访问控制及服务器监控; 4.统计报表 报表插件集成、报价单 5.常用示例 邮件、短信、打印、电子签章等常用功能示例; 前后端使用技术: •1、前端技术 •JS框架:jquery-2.1.1、Bootstrap.js、JQuery UI •CSS框架:Bootstrap v3.3.4(稳定是后台,UI方面根据需求自己升级改造吧)。 •客户端验证:jQuery Validation Plugin 1.9.0。 •在线编辑器:ckeditor、simditor •上传文件:Uploadify v3.2.1 •动态页签:Jerichotab(自己改造) •数据表格:jqGrid、Bootstrap Talbe •对话框:layer-v2.3 •下拉选择框:jQuery Select2 •树结构控件:jQuery zTree、jQuery wdtree •页面布局:jquery.layout.js 1.4.4 •图表插件:echarts、highcharts •日期控件: My97DatePicker •2、后端技术 •核心框架:ASP.NET MVC5、WEB API •持久层框架:EntityFramework 6.0 •定时计划任务:Quartz.Net组件 •安全支持:过滤器、Sql注入、请求伪造 •服务端验证:实体模型验证、自己封装Validator •缓存框架:微软自带Cache、Redis •日志管理:Log4net、登录日志、操作日志 •工具类:NPOI、Newtonsoft.Json、验证码、丰富公共类似
关于EF6的正式书籍很少,这个文章是国内翻译整理出来的,共46个小节。适合循序渐进的学习。 第1部分 开始使用实体框架之历史和框架简述 第2部分 开始使用实体框架之使用介绍 第3部分 实体数据建模基础之创建一个简单的模型 第4部分 实体数据建模基础之从已存在的数据库创建模型 第5部分 实体数据建模基础之有载荷和无载荷的多对多关系建模 第6部分 实体数据建模基础之使用Code First建模自引用关系 第7部分 实体数据建模基础之拆分实体到多表以及拆分表到多实体 第8部分 实体数据建模基础之继承关系映射TPT 第9部分 实体数据建模基础之继承关系映射TPH 第10部分 实体数据建模基础之两实体间Is-a和Has-a关系建模、嵌入值映射 第11部分 查询之异步查询 第12部分 查询之使用SQL语句 第13部分 查询之使用Entity SQL 第14部分 查询之查询中设置默认值和存储过程返回多结果集 第15部分 查询之与列表值比较和过滤关联实体 第16部分 查询之左连接和在TPH中通过派生类排序 第17部分 查询之分页、过滤和使用DateTime中的日期部分分组 第18部分 查询之结果集扁平化和多属性分组 第19部分 查询之使用位操作和多属性连接(join) 第20部分 ASP.NET MVC中使用实体框架之在MVC中构建一个CRUD示例 第21部分 ASP.NET MVC中使用实体框架之在页面中创建查询和使用ASP.NET URL路由过虑 第22部分 加载实体和导航属性之延迟加载 第23部分 加载实体和导航属性之预先加载与Find()方法 第24部分 加载实体和导航属性之查询内存对象 第25部分 加载实体和导航属性之加载完整的对象图和派生类型上的导航属性 第26部分 加载实体和导航属性之延缓加载关联实体和在别的LINQ查询操作中使用Include()方法 第27部分 加载实体和导航属性之关联实体过滤、排序、执行聚合操作 第28部分 加载实体和导航属性之测试实体是否加载与显式加载关联实体 第29部分 加载实体和导航属性之过滤预先加载的实体集合和修改外键关联 第30部分 继承与建模高级应用之多对多关联 第31部分 继承与建模高级应用之自引用关联 第32部分 继承与建模高级应用之TPH与TPT (1) 第33部分 继承与建模高级应用之TPH与TPT (2) 第34部分 继承与建模高级应用之多条件与QueryView 第35部分 继承与建模高级应用之TPH继承映射中使用复合条件 第36部分 继承与建模高级应用之TPC继承映射 第37部分 继承与建模高级应用之独立关联与外键关联 第38部分 使用对象服务之动态创建连接字符串和从数据库读取模型 第39部分 使用对象服务之配置模型和使用单复数服务 第40部分 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读) 第41部分 使用对象服务之标识关系中使用依赖实体与异步查询保存 第42部分 POCO之使用POCO 第43部分 POCO之使用POCO加载实体 第44部分 POCO之POCO中使用值对象和对象变更通知 第45部分 POCO之获取原始对象与手工同步对象图和变化跟踪器 第46部分 POCO之领域对象测试和仓储测试

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧