Includes 一對一 返回

SqlSugar 沟通中
8 439
该叫什么 发布于1个月前
悬赏:0 飞吻

//實體

public partial class YearsEndingTaskPersonDetail{

    

  [Navigate(NavigateType.OneToOne, nameof(UserNo), nameof(YearsEndingPersonSalaryMoneyDetail.UserNo))]

  public YearsEndingPersonSalaryMoneyDetail yearsEndingPersonSalaryMoneyDetail { get; set; }



  [Navigate(NavigateType.OneToOne, nameof(UserNo), nameof(YearsEndingPersonSalaryDetail.UserNo))]

  public YearsEndingPersonSalaryDetail  yearsEndingPersonSalaryDetail { get; set; }


}


 

//查詢

List<YearsEndingTaskPersonDetail> list=Db.Queryable<YearsEndingTaskPersonDetail>()

                .LeftJoin<YearsEndingPersonSalaryMoneyDetail>((r,b)=>r.UserNo==b.UserNo && b.FormNo== FromNo) //FromNo方法傳入的值

                .LeftJoin<YearsEndingPersonSalaryDetail>((r, b,c) => r.UserNo == c.UserNo && c.FormNo == FromNo)


這個如何使用 Includes 去實現綁定

热忱回答8

  • fate sta fate sta VIP0
    1个月前
    0 回复
  • 夢 VIP0
    1个月前

    額,不行我之前試過用IncludeLeftJoin 用過這個,是也能查詢出來,但是YearsEndingTaskPersonDetail類面裡面的YearsEndingPersonSalaryMoneyDetail屬性是null,沒有賦值上

    0 回复
  • 夢 VIP0
    1个月前

    image.png
    image.png

    0 回复
  • fate sta fate sta VIP0
    1个月前

    AOP看SQL

    0 回复
  • fate sta fate sta VIP0
    1个月前

    填充用Includes 

    0 回复
  • fate sta fate sta VIP0
    1个月前

    只是条件用IncludesLeftJoin

    0 回复
  • fate sta fate sta VIP0
    1个月前
    //导航+主表过滤  导航属性过滤
    var list = db.Queryable<StudentA>()
             .Includes(x => x.SchoolA) //填充子对象 (不填充可以不写)
             .Where(x =>x.SchoolA.SchoolName=="北大"
             .ToList();
     
     
    //导航+主表过滤  只查有导航数据 (新功能:5.1.2.8)
    var list = db.Queryable<StudentA>()
             .Includes(x => x.SchoolA) //填充子对象 (不填充可以不写)
             .Where(x => SqlFunc.Exists(x.SchoolA.主键))
             .ToList();   

    也可以这样

    0 回复
  • 夢 VIP0
    1个月前


    我這裡的一對一的條件是這樣的是要在連接的基礎上加上YEPSMD .form='aaa'才能實現一對一如果不加是一對多的關係SELECT  * FROM YEARS_ENDING_TASK_PERSON_DETAIL yetpdLEFT JOIN YEARS_ENDING_PERSON_SALARY_MONEY_DETAIL yepsmd  ON yetpd.USER_NO =YEPSMD .USER_NO  AND YEPSMD .form='aaa'如果使用

    //导航+主表过滤  导航属性过滤
    var list = db.Queryable<StudentA>()
             .Includes(x => x.SchoolA) //填充子对象 (不填充可以不写)
             .Where(x =>x.SchoolA.SchoolName=="北大"
             .ToList();
      
    //导航+主表过滤  只查有导航数据 (新功能:5.1.2.8)
    var list = db.Queryable<StudentA>()
             .Includes(x => x.SchoolA) //填充子对象 (不填充可以不写)
             .Where(x => SqlFunc.Exists(x.SchoolA.主键))
             .ToList();   

    會報出單列子查詢所傳回的資料列不只一列錯誤,應為我這個導航是一對一的 只有加上這個AND YEPSMD .form='aaa'才會獲取到唯一的一個

    0 回复