NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗
有些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();
NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗的更多相关文章
- Linq&Lumda---LINQ to DataSet的DataTable操作
1. DataTable读取列表 DataSet ds = new DataSet();// 省略ds的Fill代码DataTable products = ds.Tables["Produ ...
- NHibernate 数据查询之Linq to NHibernate
刚学NHibernate的时候觉得,HQL挺好用的,但是终归没有与其他技术相关联,只有NHibernate用到,一来容易忘记,二来没有智能提示,排除错误什么的都不给力,直到看到一个同事用Linq to ...
- NHibernate初学二之简单执行SQL及HQL、Linq
上篇文章简单介绍NHibernate之简单增删改查,本文将会简单介绍有关执行NHibernate的SQL.HQL及存储过程: 一:执行SQL语句实例,运用CreateSQLQuery方法 public ...
- 使用NHibernate(5)-- Linq To NHibernate
Linq是NHibernate所支持的查询语言之一,对于Linq的实现在源码的src/Linq目录下.以下是一个使用Linq进行查询数据的示例: var users = session.Query&l ...
- linq to NHibernate
什么是linq to NHibernate 什么是linq to NHibernate?说简单一点就是linq + NHibernate. linq语句是.Net 3.5中新增的功能,从问世以来就 ...
- ADO.NET与ORM的比较:NHibernate实现CRUD(转)
原文地址 http://blog.csdn.net/zhoufoxcn/article/details/5402511 说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spr ...
- NHibernate可视化设计插件——Mindscape.NHibernateModelDesigner
我一直希望NHibernate能够支持像EF一样支持可视化操作,今天去网上搜了一下,发现有一个插件,类似EF的可视化功能. 下载地址:Mindscape.NHibernateModelDesigner ...
- 比较NHibernate和Entity Framework
葡萄牙的一位开发者 Ricardo Peres 最近发布了一篇文章,以看起来无偏见的形式对领先的两种 .NET ORM:NHibernate 和 Entity Framework 进行了比较. 我们建 ...
- Entity FrameWork 与 NHibernate
1 Nhibernate 展示了NHibernate在数据库和用程序之间提供了一个持久层. 应用程序自己提供ADO.NET连接,并且自行管理事务.NHibernate体系结构如图1-51所示.它体 ...
随机推荐
- memcached 经典问题或现象
缓存雪崩现象及真实案例 缓存雪崩一般是由某个缓存节点失效,导致其他节点的缓存命中率下降, 缓存中缺失的数据 去数据库查询.短时间内,造成数据库服务器崩溃. 重启 DB,短期又被压跨,但缓存数据也多一些 ...
- Java:获取IP地址
文章来源:https://www.cnblogs.com/hello-tl/p/9139323.html import java.net.InetAddress; import java.net.Un ...
- 给Django中的url起名字
url反转 =>reverse 1.from django.shortcuts import reverse 2. 利用reverse函数对URL名称进行反转 reverse(url名称 ...
- Fiddler抓包-只抓APP的请求
from:https://www.cnblogs.com/yoyoketang/p/6582437.html fiddler抓手机app的请求,估计大部分都会,但是如何只抓来自app的请求呢? 把来自 ...
- Flask---ajax(jquery)交互
目录结构如下: |--| |--run.py |--static |--test.txt |--templates |--index.html 前端代码如下: index.html <!DOCT ...
- Relocation(状压DP)
Description Emma and Eric are moving to their new house they bought after returning from their honey ...
- 实体类与实体DTO类之间的转换
实体类与实体DTO类之间的转换 实体类与实体DTO类之间的转换 1.通过使用第三方序列化反序列化工具Newtonsoft.Json 2.通过反射实现 3.通过表达式目录树加字典缓存实现 4. 通过表达 ...
- 任意两点间最短距离floyd-warshall ---- POJ 2139 Six Degrees of Cowvin Bacon
floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) f ...
- 【UOJ179】线性规划(单纯形)
题意: 思路:单纯形模板 ..,..]of double; idx,idy,q:..]of longint; c:..]of double; n,m,i,j,op,x,y:longint; eps,m ...
- CodeForces 597A Divisibility
水题. #include<iostream> #include<cstring> #include<cmath> #include<queue> #in ...