zoukankan      html  css  js  c++  java
  • .Net Mvc Repository.cs 单表自连接 查询 [2]

    4:单表自连接的查询。沿用前面Repository中的3表嵌套查询结构体的SearchBy*函数

    (1)当自连接至本表的  N—>1 属性时,即  FeedBack2(N)—>(1)FeedBack   

    在反馈表结构中,我们可以看到:FeedBackMap.cs

    public FeedBackMap()
            {
             
                Id(o => o.Id);
                Map(o => o.CreateTime);
                Map(o => o.IsDelete);
                Map(o => o.Version);
                Map(o=>o.EntityIndex);
                Map(o=>o.Contents);
                Map(o => o.Type);
                References<LoginUser>(o => o.LoginUser).Not.Nullable();
    References<FeedBack>(o => o.ParentFeedBack); HasMany<FeedBack>(o => o.ChildFeedBacks).Inverse().Cascade.All(); }

      查询界面如下:我们默认,显示的列表页,是ParentFeedBack为Null的列表,即只显示主题

     我们期望,在点击每一行的反馈是,在下面能够显示,该条目的详细信息,以及管理员对该条目的回复信息,以信件的格式如下:

    问题就在这里,我们要 用FeedBack 连接到  ParentFeedBack[FeedBack]  ,做连接,加载出ParentFeedBack_id 为 反馈信息的ID 的  FeedBack 对象

    此时,我们只需对Repository.ce 中的SearchByFeedBack()做如下修改:

            string alias = string.Empty;
                if (deepIndex > 0)
                {
                    notself = "feedBack.";
                    if (deepIndex == 1)
                    {
                        parentSearch = "ParentFeedBack"; //第二次加载到FeedBack查询ParentFeedBack时,加载此处时,参照Map文件中的属性命名 alias 做链接
    }
    else { parentSearch = parentSearch + ".FeedBack"; } alias = parentSearch; query.CreateAlias(alias, "feedBack"); } deepIndex++;

     当然,在对比判断条件时,还得做如下修改:

                     if (df.type.Equals("ParentFeedBack"))
                        {
                            query.Add(Restrictions.IsNull(notself + "ParentFeedBack")); //满足现实的List页都是反馈的主题,即文章刚开始提到的要求
                             continue;
                        }
                        if (df.type.Equals("ParentFeedBackForTwo"))   //做自连接,第二次加载
                         {
                           // query.Add(Restrictions.Eq(notself + "ParentFeedBack", df.value));
                            SearchByFeedBack(query, df.field, ref deepIndex, ref parentSearch);
                            continue;
                        }
                        if (df.type.Equals("ParentFeedBackId"))  //做自连接,第二次加载,与“第二张表”做链接,Id
                        {
                            query.Add(Restrictions.Eq(notself + "Id",df.value));
                            continue;
                        }
  • 相关阅读:
    【Python】数据写入Excel(封装后)
    【Charles】设置代理后 手机无法上网
    【Python】随机数/随机值
    【Python】操作JSON
    【Python】补零 不足位数补零
    【python】+操作yaml文件
    【Python】格式化输出JSON
    【Python】+系列教程(1、封装)
    【Python】+系列教程(总)
    【数据分析】+【Python】+股票数据分析
  • 原文地址:https://www.cnblogs.com/wukong0214/p/2934161.html
Copyright © 2011-2022 走看看