NHibernate不支持复杂的linq,就一定要用DataTable这么低级吗

来源:互联网 发布:md5加密Java应用 密钥 编辑:程序博客网 时间:2024/05/16 02:36

有些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();
0 0
原创粉丝点击