mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-05 13:17:57 +08:00
Navigat query
This commit is contained in:
parent
4bf2d3fd96
commit
96e585fa4b
@ -78,6 +78,7 @@ namespace OrmTest
|
||||
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();
|
||||
}
|
||||
@ -86,6 +87,7 @@ namespace OrmTest
|
||||
{
|
||||
[SugarColumn(IsPrimaryKey = true )]
|
||||
public int AId { get; set; }
|
||||
[SugarColumn(IsPrimaryKey = true)]
|
||||
public int BId { get; set; }
|
||||
}
|
||||
public class A1
|
||||
|
@ -79,6 +79,7 @@ namespace SqlSugar
|
||||
}
|
||||
else if (navObjectNameColumnInfo.Navigat.NavigatType == NavigatType.ManyToOne)
|
||||
{
|
||||
OneToOne(list, selector, listItemEntity, navObjectNamePropety, navObjectNameColumnInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -90,7 +91,7 @@ namespace SqlSugar
|
||||
{
|
||||
var bEntity = navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments()[0];
|
||||
var bEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(bEntity);
|
||||
var bPk = bEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
|
||||
var bPkColumn = bEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
|
||||
|
||||
var listItemPkColumn = listItemEntity.Columns.Where(it => it.IsPrimarykey).FirstOrDefault();
|
||||
var ids = list.Select(it => it.GetType().GetProperty(listItemPkColumn.PropertyName).GetValue(it)).Select(it => it == null ? "null" : it).Distinct().ToList();
|
||||
@ -111,29 +112,28 @@ namespace SqlSugar
|
||||
conditionalModels2.Add((new ConditionalModel()
|
||||
{
|
||||
ConditionalType = ConditionalType.In,
|
||||
FieldName = bPk.DbColumnName,
|
||||
FieldName = bPkColumn.DbColumnName,
|
||||
FieldValue = String.Join(",", abids.Select(it => it.Bid).ToArray()),
|
||||
CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name
|
||||
}));
|
||||
var navList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).Where(conditionalModels2));
|
||||
if (navList.HasValue())
|
||||
var bList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).Where(conditionalModels2));
|
||||
if (bList.HasValue())
|
||||
{
|
||||
foreach (var item in list)
|
||||
foreach (var listItem in list)
|
||||
{
|
||||
|
||||
var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true);
|
||||
var ilist = instance as IList;
|
||||
foreach (var value in navList)
|
||||
foreach (var bInfo in bList)
|
||||
{
|
||||
var pk = listItemPkColumn.PropertyInfo.GetValue(item).ObjToString();
|
||||
if (abids.Any(x => x.Aid == pk))
|
||||
var pk = listItemPkColumn.PropertyInfo.GetValue(listItem).ObjToString();
|
||||
var bid = bPkColumn.PropertyInfo.GetValue(bInfo).ObjToString();
|
||||
if (abids.Any(x => x.Aid == pk&& x.Bid== bid))
|
||||
{
|
||||
var bids = abids.Where(x => x.Aid == pk).ToList();
|
||||
if (bids.Count()>0)
|
||||
ilist.Add(value);
|
||||
ilist.Add(bInfo);
|
||||
}
|
||||
}
|
||||
navObjectNamePropety.SetValue(item, instance);
|
||||
navObjectNamePropety.SetValue(listItem, instance);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user