diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UNavDynamic111N.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UNavDynamic111N.cs index 275afa396..77075c4a8 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UNavDynamic111N.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UNavDynamic111N.cs @@ -27,7 +27,7 @@ namespace OrmTest db.Insertable(new UnitaStudentA() { StudentId = 6, SchoolId = 3, Name = "青鸟学生" }).ExecuteCommand(); var list=db.Queryable() - .Includes(x => x.SchoolA).ToList(); + .Includes(x => x.SchoolA).Where(x=>x.SchoolA.School_Name=="a").ToList(); } public class UnitaStudentA { diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs index cae398077..10b2411b5 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/OneToOneNavgateExpression.cs @@ -77,7 +77,18 @@ namespace SqlSugar " NavigateType.Dynamic no support expression . "+ this.ProPertyEntity.Type.Name, " NavigateType.Dynamic 自定义导航对象不支持在Where(x=>x.自定义.Id==1)等方法中使用"+ this.ProPertyEntity.Type.Name); } - var pk = this.ProPertyEntity.Columns.First(it => it.IsPrimarykey == true).DbColumnName; + var pk = this.ProPertyEntity.Columns.FirstOrDefault(it => it.IsPrimarykey == true)?.DbColumnName; + if (pk == null && Navigat.Name2 != null) + { + pk = this.ProPertyEntity.Columns.FirstOrDefault(it => it.PropertyName == Navigat.Name2)?.DbColumnName; + } + if(pk==null) + { + Check.ExceptionEasy( + true, + $"{this.ProPertyEntity.EntityName} naviate config error", + $"{this.ProPertyEntity.EntityName} 导航配置错误"); + } var name = this.EntityInfo.Columns.First(it => it.PropertyName == Navigat.Name).DbColumnName; var selectName = this.ProPertyEntity.Columns.First(it => it.PropertyName ==MemberName).DbColumnName; MapperSql mapper = new MapperSql();