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;
                        }
  • 相关阅读:
    BZOJ3932 [CQOI2015]任务查询系统
    数位DP专练
    Codeforces #669 div2
    Codeforces #670 div2
    P1450 [HAOI2008] 硬币购物
    P3172 [CQOI2015]选数
    比赛-Round 1 (12 Jul, 2018)
    “记计帐”需求分析
    一个程序员的哲学思考
    中国式大学——我们需要获得什么?
  • 原文地址:https://www.cnblogs.com/wukong0214/p/2934161.html
Copyright © 2011-2022 走看看