導航一對一存在多個導航條件如何使用 返回
夢 发布于1周前
如果我使用 導航一對一的時候
類:
public class YearsEndingPersonTypeDetail{
public virtual string VersionId { get; set; }
[Navigate(NavigateType.OneToOne, nameof(UserNo), nameof(MsiHrDptEmpVersion.EmpNo))]
public virtual MsiHrDptEmpVersion msiHrDptEmpVersion { get; set; }
}
使用
//导航+主表过滤 导航属性过滤var list = db.Queryable<StudentA>() .Includes(x => x.SchoolA) //填充子对象 (不填充可以不写) .Where(x =>x.SchoolA.SchoolName=="北大") .ToList();Db.Queryable<YearsEndingPersonTypeDetail>()
.Includes(ssd=>ssd.msiHrDptEmpVersion)
.Where(ssd=>ssd.msiHrDptEmpVersion.VersionId==ssd.VersionId)
.OrderByIF(!string.IsNullOrEmpty(sort), sort)
.ToPageListAsync(pagerInfo.CurrenetPageIndex, pagerInfo.PageSize, totalCount);
執行出來在sql
SELECT COUNT(1) FROM
(
SELECT "VERSION_ID"
FROM "HRCOMPENSATION"."YEARS_ENDING_PERSON_TYPE_DETAIL" "SSD"
WHERE (
(SELECT "VERSION_ID" FROM "MSI_HR_DPT_EMP_VERSION" WHERE SSD"."USER_NO"="EMPNO" ) = "VERSION_ID"
)
)
CountTable
這裡會 報出 單列子查詢所傳回的資料列不只一列
因為是在這裡(SELECT "VERSION_ID" FROM "MSI_HR_DPT_EMP_VERSION" WHERE SSD"."USER_NO"="EMPNO" )
單獨這個條件SSD"."USER_NO"="EMPNO" 要不滿足一對一在 得再加上 SSD"."VERSION_ID"=''VERSION_ID'' 才能滿足一對一
热忱回答(4)
-
hp9999 VIP0
1周前2个字段用
0 回复 -
夢 VIP0
1周前@hp9999:你好像沒有弄懂我的意思我上面的例子就是按照你這樣的,只是我的需求上還需要在追加一個匹配關係
0 回复 -
fate sta VIP0
1周前這裡會 報出 單列子查詢所傳回的資料列不只一列
这个错是你的数据问题,可能存在多对一的情况。如果一对一是是OK的。
0 回复 -
fate sta VIP0
1周前特殊情况可以用子查询实现。
0 回复