博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗
阅读量:7113 次
发布时间:2019-06-28

本文共 1043 字,大约阅读时间需要 3 分钟。

有些linq,好不容易写出来,正想扬眉吐屁一番,不料用NHibernate一执行,却报错,说是不支持,我靠。

只好捏着鼻子写一大段sql,交给它。这种直接执行SQL的情况,我看我同事写的,全部都是返回DataTable类型。

DataTable类型,我以前用得太多了。直接行、列这样子处理,感觉就是在直接操作数据库,有点不符合当代潮流。太low了。

怎么ORM起来呢?其实也可以这样的:

string sql = @"select p.*,l.message,l.sendorderid from targetunit u join targetperson p on u.id=p.unitid join (select u.type,l.sendorderid,o.message from sendlist l join targetUnit u on l.type=u.type join SendOrder o on l.sendorderid=o.id) l on u.type=l.type where not exists(select 1 from sendlog g where g.sendorderid=l.sendorderid and g.mobile=p.mobile and g.ok=1)";DataSet ds = personRepository.QueryDataSet(sql, null);return ds.Tables[0].AsEnumerable().Select(dataRow => new SendListVM{    ID = Convert.ToInt64(dataRow[0]),    NAME = dataRow[1].ToString(),    MOBILE = dataRow[2].ToString(),    UNITID = Convert.ToInt64(dataRow[3]),    POSITION = dataRow[4].ToString(),    MESSAGE = dataRow[5].ToString(),    SENDORDERID = Convert.ToInt64(dataRow[6]),}).OrderBy( m => m.SENDORDERID).ToList();

转载于:https://www.cnblogs.com/leftfist/p/6808696.html

你可能感兴趣的文章
git - 常用命令
查看>>
一个NSObject对象占多少内存呢?
查看>>
深入学习js之——参数按值传递#9
查看>>
Jackson使用指南
查看>>
Kotlin1.3 协程Api详解:CoroutineScope, CoroutineContext
查看>>
产品思维
查看>>
Flutter 入门指北(Part 2)之基础部件
查看>>
关于前端脚本异常监控的思考
查看>>
Observer源码解析
查看>>
java获取B站弹幕文件的两种方案
查看>>
常用Json工具类
查看>>
数据类型,及深拷贝
查看>>
在 iOS 中使用 GLSL 实现抖音特效
查看>>
Android无障碍:通过Java设置contentDescription (GridView item)
查看>>
【Javascript】探究javascript中的堆/栈/任务队列与并发模型 event loop的关系
查看>>
《Miss Talk》第04期:对话凯叔讲故事 曲艳颂
查看>>
基于React Native和Ethers.js的电子钱包(二):路由和导航
查看>>
深入理解OSGi类加载机制
查看>>
dva-plugin-common发布.
查看>>
分享几个Python小技巧函数里的4个小花招
查看>>