Update .net core project

This commit is contained in:
sunkaixuan
2022-07-03 04:39:30 +08:00
parent b931d2604c
commit 55305ec54b
4 changed files with 41 additions and 7 deletions

View File

@@ -12,7 +12,7 @@ namespace SqlSugar
private static bool IsDefaultValue(object pvValue) private static bool IsDefaultValue(object pvValue)
{ {
return pvValue == null || pvValue == UtilMethods.GetDefaultValue(pvValue.GetType()); return pvValue == null || pvValue.Equals(UtilMethods.GetDefaultValue(pvValue.GetType()));
} }
private void InitParentList() private void InitParentList()
{ {
@@ -81,10 +81,32 @@ namespace SqlSugar
children = children.Distinct().ToList(); children = children.Distinct().ToList();
var x = this._Context.Storageable(children).WhereColumns(new string[] { pkColumn.PropertyName }).ToStorage(); var x = this._Context.Storageable(children).WhereColumns(new string[] { pkColumn.PropertyName }).ToStorage();
var insertData = children = x.InsertList.Select(it => it.Item).ToList(); var insertData = children = x.InsertList.Select(it => it.Item).ToList();
if (pkColumn.IsIdentity) if (pkColumn.IsIdentity||pkColumn.OracleSequenceName.HasValue())
{ {
InsertIdentity(insertData); InsertIdentity(insertData);
} }
else if (pkColumn.UnderType==UtilConstants.LongType&&pkColumn.IsIdentity==false)
{
foreach (var child in insertData)
{
if (IsDefaultValue(pkColumn.PropertyInfo.GetValue(child)))
{
pkColumn.PropertyInfo.SetValue(child, SnowFlakeSingle.Instance.NextId());
}
}
this._Context.Insertable(insertData).ExecuteCommand();
}
else if (pkColumn.UnderType == UtilConstants.GuidType && pkColumn.IsIdentity == false)
{
foreach (var child in insertData)
{
if (IsDefaultValue(pkColumn.PropertyInfo.GetValue(child)))
{
pkColumn.PropertyInfo.SetValue(child, Guid.NewGuid());
}
}
this._Context.Insertable(insertData).ExecuteCommand();
}
else else
{ {
this._Context.Insertable(insertData).ExecuteCommand(); this._Context.Insertable(insertData).ExecuteCommand();

View File

@@ -41,9 +41,8 @@ namespace SqlSugar
EntityColumnInfo parentPkColumn = _ParentPkColumn; EntityColumnInfo parentPkColumn = _ParentPkColumn;
if (_ParentPkColumn == null) if (_ParentPkColumn == null)
{ {
_ParentPkColumn= this._ParentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey); parentPkColumn= _ParentPkColumn = this._ParentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey);
} }
return parentPkColumn; return parentPkColumn;
} }

View File

@@ -13,6 +13,7 @@ namespace SqlSugar
var parentEntity = _ParentEntity; var parentEntity = _ParentEntity;
var parentList = _ParentList; var parentList = _ParentList;
var parentColumn = parentEntity.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name); var parentColumn = parentEntity.Columns.FirstOrDefault(it => it.PropertyName == nav.Navigat.Name);
var parentPkColumn = parentEntity.Columns.FirstOrDefault(it => it.IsPrimarykey);
var thisEntity = this._Context.EntityMaintenance.GetEntityInfo<TChild>(); var thisEntity = this._Context.EntityMaintenance.GetEntityInfo<TChild>();
EntityColumnInfo thisPkColumn = GetPkColumnByNav(thisEntity, nav); EntityColumnInfo thisPkColumn = GetPkColumnByNav(thisEntity, nav);
Check.Exception(thisPkColumn == null, $" Navigate {parentEntity.EntityName} : {name} is error ", $"导航实体 {parentEntity.EntityName} 属性 {name} 配置错误"); Check.Exception(thisPkColumn == null, $" Navigate {parentEntity.EntityName} : {name} is error ", $"导航实体 {parentEntity.EntityName} 属性 {name} 配置错误");
@@ -31,6 +32,17 @@ namespace SqlSugar
navPropertyValue = pkValue; navPropertyValue = pkValue;
} }
} }
if (IsDefaultValue(navPropertyValue))
{
InsertDatas<TChild>(new List<TChild>() { childItem }, thisPkColumn);
navPropertyValue = thisPkColumn.PropertyInfo.GetValue(childItem);
parentColumn.PropertyInfo.SetValue(parent,navPropertyValue);
this._Context.Updateable<DbTableInfo>
().AS(parentEntity.DbTableName)
.SetColumns(parentColumn.DbColumnName, navPropertyValue)
.Where(parentPkColumn.DbColumnName,"=", parentPkColumn.PropertyInfo.GetValue(parent)).ExecuteCommand();
}
thisPkColumn.PropertyInfo.SetValue(childItem, navPropertyValue); thisPkColumn.PropertyInfo.SetValue(childItem, navPropertyValue);
childList.Add(childItem); childList.Add(childItem);
} }

View File

@@ -131,7 +131,8 @@ namespace SqlSugar
lastShortName = shortName; lastShortName = shortName;
formInfo = item; formInfo = item;
} }
queryable.Select($" COUNT(1)"); var isAny = (memberInfo.Expression as MethodCallExpression).Method.Name == "Any";
queryable.Select(isAny ? "1" : " COUNT(1) ");
var last = subInfos.First(); var last = subInfos.First();
var FirstPkColumn = last.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey); var FirstPkColumn = last.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
Check.ExceptionEasy(FirstPkColumn == null, $"{ last.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{ last.ThisEntityInfo.EntityName} 缺少主键"); Check.ExceptionEasy(FirstPkColumn == null, $"{ last.ThisEntityInfo.EntityName} need PrimayKey", $"使用导航属性{ last.ThisEntityInfo.EntityName} 缺少主键");
@@ -140,9 +141,9 @@ namespace SqlSugar
queryable.Where($" {this.shorName}.{ queryable.SqlBuilder.GetTranslationColumnName(PkColumn.DbColumnName)} = {masterShortName}.{queryable.SqlBuilder.GetTranslationColumnName(FirstPkColumn.DbColumnName)} "); queryable.Where($" {this.shorName}.{ queryable.SqlBuilder.GetTranslationColumnName(PkColumn.DbColumnName)} = {masterShortName}.{queryable.SqlBuilder.GetTranslationColumnName(FirstPkColumn.DbColumnName)} ");
queryable.WhereIF(this.whereSql.HasValue(), GetWhereSql1(this.whereSql,lastShortName, joinInfos, queryable.SqlBuilder)); queryable.WhereIF(this.whereSql.HasValue(), GetWhereSql1(this.whereSql,lastShortName, joinInfos, queryable.SqlBuilder));
MapperSql.Sql = $"( {queryable.ToSql().Key} ) "; MapperSql.Sql = $"( {queryable.ToSql().Key} ) ";
if ((memberInfo.Expression as MethodCallExpression).Method.Name == "Any") if (isAny)
{ {
MapperSql.Sql = $"( {MapperSql.Sql}>0 ) "; MapperSql.Sql = $" EXISTS( {MapperSql.Sql}) ";
} }
return MapperSql; return MapperSql;