选择列表属性NHibernate Projections

时间:2018-03-08 20:12:45

标签: c# nhibernate fluent-nhibernate queryover

我尝试将LINQ查询转换为NHibernate QueryOver,这是选择List<>的问题。在另一个List属性中的属性,它没有必要用QueryOver解决它,我接受另一个建议:

var alas = (from ala in session.Query<TB_ALA>()
                            select new TB_ALA
                            {
                                ID_ALA = ala.ID_ALA,
                                CD_ALA = ala.CD_ALA,
                                DS_ALA = ala.DS_ALA,
                                TB_QUARTO = (from quarto in ala.TB_QUARTO
                                             select new TB_QUARTO
                                             {
                                                 CD_QUARTO = quarto.CD_QUARTO,
                                                 TB_LEITO = (from leito in quarto.TB_LEITO
                                                             select new TB_LEITO
                                                             {
                                                                 ID_LEITO = leito.ID_LEITO
                                                             }).ToList()
                                             }).ToList()
                            }).ToList();

但是得到了以下错误:&#34;必须是可简化的节点&#34;

我的模型如下:

 public class TB_ALA
    {
        public TB_ALA()
        {
            this.TB_QUARTO = new List<TB_QUARTO>();
        }
        //[Key]
        public virtual long ID_ALA { get; set; }
        public virtual string CD_ALA { get; set; }
        public virtual string DS_ALA { get; set; }
        public virtual long? ID_TABCAR { get; set; }
        public virtual long? ID_CADRESP { get; set; }
        public virtual decimal? CD_CENTRO_CUSTO { get; set; }
        public virtual IEnumerable<TB_QUARTO> TB_QUARTO { get; set; }
    }

        public class TB_QUARTO
    {
        public TB_QUARTO()
        {
            this.TB_LEITO = new List<TB_LEITO>();
        }

        public virtual long ID_QUARTO { get; set; }
        public virtual string CD_QUARTO { get; set; }
        public virtual long ID_ALA { get; set; }
        public virtual string DS_IMPRESSORA { get; set; }
        public virtual string RAMAL { get; set; }
        public virtual string FL_QUARTO_NUTRICAO { get; set; }
        public virtual TB_ALA TB_ALA { get; set; }
        public virtual IEnumerable<TB_LEITO> TB_LEITO { get; set; }

    }

    public class TB_LEITO
    {
        public virtual long ID_LEITO { get; set; }
        public virtual string CD_LEITO { get; set; }
        public virtual int SEQ_LEITO { get; set; }
        public virtual long ID_QUARTO { get; set; }
        public virtual long? ID_ESPECIALIDADE { get; set; }
        public virtual TB_QUARTO TB_QUARTO { get; set; }
    }

我的投影查询已启动,我无法在下面完成:

TB_ALA alaAlias = null;
            TB_QUARTO quartoAlias = null;
            var alas = session.QueryOver<TB_ALA>(() => alaAlias)
                .Select(Projections.ProjectionList()
                        .Add(Projections.Property(() => alaAlias.ID_ALA).WithAlias(() => alaAlias.ID_ALA))
                        .Add(Projections.Property(() => alaAlias.CD_ALA).WithAlias(() => alaAlias.CD_ALA))
                        .Add(Projections.Property(() => alaAlias.DS_ALA).WithAlias(() => alaAlias.CD_ALA))
                        .Add(alaAlias.TB_QUARTO.Select(Projections.ProjectionList()
                            .Add(Projections.Property(() => quartoAlias.CD_QUARTO).WithAlias(() => quartoAlias.CD_QUARTO))
                            ).Future<TB_ALA>())
                        ).Future<TB_ALA>();

谢谢你们。

0 个答案:

没有答案