mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-15 23:13:42 +08:00
Update exp to sql
This commit is contained in:
parent
1af0b3b053
commit
df94ed9363
@ -80,12 +80,15 @@ namespace OrmTest
|
||||
db.DbMaintenance.TruncateTable<ABMapping1>();
|
||||
db.Insertable(new A1() { Id = 1, Name = "a1" }).ExecuteCommand();
|
||||
db.Insertable(new A1() { Id = 2, Name = "a2" }).ExecuteCommand();
|
||||
db.Insertable(new A1() { Id = 3, Name = "a3" }).ExecuteCommand();
|
||||
db.Insertable(new B1() { Id = 1, Name = "b1" }).ExecuteCommand();
|
||||
db.Insertable(new B1() { Id = 2, Name = "b2" }).ExecuteCommand();
|
||||
db.Insertable(new ABMapping1() { AId=1,BId=1 }).ExecuteCommand();
|
||||
db.Insertable(new ABMapping1() { AId =2, BId = 1 }).ExecuteCommand();
|
||||
db.Insertable(new ABMapping1() { AId = 2, BId = 2 }).ExecuteCommand();
|
||||
var list3= db.Queryable<A1>().Includes(x => x.BList).ToList();
|
||||
var list3= db.Queryable<A1>()
|
||||
.Includes(x => x.BList)
|
||||
.Where(x=>x.BList.Any()).ToList();
|
||||
var list31 = db.Queryable<A1>().Includes(x => x.BList,x=>x.AList).ToList();
|
||||
|
||||
db.CodeFirst.InitTables(typeof(Tree1));
|
||||
|
@ -94,18 +94,24 @@ namespace SqlSugar
|
||||
}
|
||||
private MapperSql GetManyToManySql()
|
||||
{
|
||||
var pk = this.ProPertyEntity.Columns.First(it => it.IsPrimarykey == true).DbColumnName;
|
||||
var name = this.EntityInfo.Columns.First(it => it.PropertyName == Navigat.Name).DbColumnName;
|
||||
var selectName = this.ProPertyEntity.Columns.First(it => it.PropertyName == MemberName).DbColumnName;
|
||||
|
||||
var bPk = this.ProPertyEntity.Columns.First(it => it.IsPrimarykey == true).DbColumnName;
|
||||
var aPk = this.EntityInfo.Columns.First(it => it.IsPrimarykey == true).DbColumnName;
|
||||
MapperSql mapper = new MapperSql();
|
||||
var queryable = this.context.Queryable<object>();
|
||||
pk = queryable.QueryBuilder.Builder.GetTranslationColumnName(pk);
|
||||
name = queryable.QueryBuilder.Builder.GetTranslationColumnName(name);
|
||||
selectName = queryable.QueryBuilder.Builder.GetTranslationColumnName(selectName);
|
||||
mapper.Sql = queryable
|
||||
.AS(this.ProPertyEntity.DbTableName)
|
||||
.WhereIF(!string.IsNullOrEmpty(whereSql),whereSql)
|
||||
.Where($" {ShorName}.{name}={pk} ").Select(selectName).ToSql().Key;
|
||||
bPk = queryable.QueryBuilder.Builder.GetTranslationColumnName(bPk);
|
||||
aPk = queryable.QueryBuilder.Builder.GetTranslationColumnName(aPk);
|
||||
var mappingType = Navigat.MappingType;
|
||||
var mappingEntity = this.context.EntityMaintenance.GetEntityInfo(mappingType);
|
||||
var mappingTableName=queryable.QueryBuilder.Builder.GetTranslationTableName(mappingEntity.DbTableName);
|
||||
var mappingA = mappingEntity.Columns.First(it => it.PropertyName == Navigat.MappingAId).DbColumnName;
|
||||
var mappingB = mappingEntity.Columns.First(it => it.PropertyName == Navigat.MappingBId).DbColumnName;
|
||||
mappingA = queryable.QueryBuilder.Builder.GetTranslationColumnName(mappingA);
|
||||
mappingB = queryable.QueryBuilder.Builder.GetTranslationColumnName(mappingB);
|
||||
var bTableName = queryable.QueryBuilder.Builder.GetTranslationTableName(this.ProPertyEntity.DbTableName);
|
||||
mapper.Sql = $" (select count(1) from {bTableName} {this.ProPertyEntity.DbTableName}_1 where {this.ProPertyEntity.DbTableName}_1.{bPk} in (select {mappingA} from {mappingTableName} where {mappingB} = {ShorName}.{aPk} )) ";
|
||||
if (this.whereSql.HasValue())
|
||||
mapper.Sql = mapper.Sql + " AND " + this.whereSql;
|
||||
mapper.Sql = $" ({mapper.Sql}) ";
|
||||
mapper.Sql = GetMethodSql(mapper.Sql);
|
||||
return mapper;
|
||||
|
Loading…
Reference in New Issue
Block a user