nhibernate的不支持

linq的不支持:

IQueryable<Model.MessageBoard> iq = new ManagerBase<Model.MessageBoard, Model.MessageBoard>().Query();
 IQueryable<Model.Author> iq2 = new ManagerBase<Model.Author, Model.Author>().Query();

IQueryable<Model.Order> iq2 = new ManagerBase<Model.Order, Model.Order>().Query();
           IList<Gx.Model.MessageBoard> MessBoard = (from m in iq2
                                                     join m2 in iq
                                                     on m.AuthorId equals m2.Author.AuthorId into m3
                                                     from t in m3
                                                     // where m2.AuthorId<15   .............................没编译就直接报错

                                                    //where m.AuhtorID<15   .................................没有问题(但是,我想要的是用m2.AuthorId作条件,不知道如何解决。)
                                                     select new Gx.Model.MessageBoard { Mb_id = t.Mb_id, FromID = t.FromID, Realname = t.FromID != 0 ? t.Author.RealName : t.Realname, MBIP = t.FromID != 0 ? t.Author.OtherAddress : t.MBIP, MBMessage = t.MBMessage, MBMessageDate = t.MBMessageDate, Author = t.Author })
                                                     .Take(Count)
                  //.where(o=>o.AuthorId) .......................编译后也会报错。
                                                     .ToList<Gx.Model.MessageBoard>()

                                                     ;
           MessBoard = MessBoard
                              .OrderByDescending(o => o.Mb_id)
                              .ToList();

------------------------------------------------------------------------------------------------------------------------------------------------

from c in Customers
  from p in c.Purchases.DefaultIfEmpty()//DefaultIfEmpty()在linq中可以实现左连接,但是在nhibernate to linq中却不行。
                        select new { c.Name, p.Description, Price = (decimal?)p.Price }

 

-----------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------

HQL的不支持:

string HQL = "SELECT  t.Mb_id ,t.FromID ,(case when t.FromID!=0 then A.RealName  else t.Realname  end),(cast(t.MBMessage as string)),t.MBMessageDate,cast(A.Username as string)  from Author A right join MessageBoard t on A.AuthorID=t.FromID//当两张表不存在父子关系的时候,不能使用这种方式连表(用linq和sql可以实现)

where A.AuthorId=:AID  group by t.Mb_id,t.FromID,A.RealName,t.Realname,t.MBMessage,t.MBMessageDate,A.Username";

 

posted on 2012-12-28 17:26  HonestPeople  阅读(178)  评论(1编辑  收藏  举报