mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-17 01:46:18 +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 = 1, Name = "b1" }).ExecuteCommand();
|
||||||
db.Insertable(new B1() { Id = 2, Name = "b2" }).ExecuteCommand();
|
db.Insertable(new B1() { Id = 2, Name = "b2" }).ExecuteCommand();
|
||||||
db.Insertable(new ABMapping1() { AId=1,BId=1 }).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();
|
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).ToList();
|
||||||
}
|
}
|
||||||
@ -86,6 +87,7 @@ namespace OrmTest
|
|||||||
{
|
{
|
||||||
[SugarColumn(IsPrimaryKey = true )]
|
[SugarColumn(IsPrimaryKey = true )]
|
||||||
public int AId { get; set; }
|
public int AId { get; set; }
|
||||||
|
[SugarColumn(IsPrimaryKey = true)]
|
||||||
public int BId { get; set; }
|
public int BId { get; set; }
|
||||||
}
|
}
|
||||||
public class A1
|
public class A1
|
||||||
|
@ -79,6 +79,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
else if (navObjectNameColumnInfo.Navigat.NavigatType == NavigatType.ManyToOne)
|
else if (navObjectNameColumnInfo.Navigat.NavigatType == NavigatType.ManyToOne)
|
||||||
{
|
{
|
||||||
|
OneToOne(list, selector, listItemEntity, navObjectNamePropety, navObjectNameColumnInfo);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -90,7 +91,7 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
var bEntity = navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments()[0];
|
var bEntity = navObjectNameColumnInfo.PropertyInfo.PropertyType.GetGenericArguments()[0];
|
||||||
var bEntityInfo = this.Context.EntityMaintenance.GetEntityInfo(bEntity);
|
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 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();
|
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()
|
conditionalModels2.Add((new ConditionalModel()
|
||||||
{
|
{
|
||||||
ConditionalType = ConditionalType.In,
|
ConditionalType = ConditionalType.In,
|
||||||
FieldName = bPk.DbColumnName,
|
FieldName = bPkColumn.DbColumnName,
|
||||||
FieldValue = String.Join(",", abids.Select(it => it.Bid).ToArray()),
|
FieldValue = String.Join(",", abids.Select(it => it.Bid).ToArray()),
|
||||||
CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name
|
CSharpTypeName = bColumn.PropertyInfo.PropertyType.Name
|
||||||
}));
|
}));
|
||||||
var navList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).Where(conditionalModels2));
|
var bList = selector(this.Context.Queryable<object>().AS(bEntityInfo.DbTableName).Where(conditionalModels2));
|
||||||
if (navList.HasValue())
|
if (bList.HasValue())
|
||||||
{
|
{
|
||||||
foreach (var item in list)
|
foreach (var listItem in list)
|
||||||
{
|
{
|
||||||
|
|
||||||
var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true);
|
var instance = Activator.CreateInstance(navObjectNamePropety.PropertyType, true);
|
||||||
var ilist = instance as IList;
|
var ilist = instance as IList;
|
||||||
foreach (var value in navList)
|
foreach (var bInfo in bList)
|
||||||
{
|
{
|
||||||
var pk = listItemPkColumn.PropertyInfo.GetValue(item).ObjToString();
|
var pk = listItemPkColumn.PropertyInfo.GetValue(listItem).ObjToString();
|
||||||
if (abids.Any(x => x.Aid == pk))
|
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();
|
ilist.Add(bInfo);
|
||||||
if (bids.Count()>0)
|
|
||||||
ilist.Add(value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
navObjectNamePropety.SetValue(item, instance);
|
navObjectNamePropety.SetValue(listItem, instance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user