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)
{
return pvValue == null || pvValue == UtilMethods.GetDefaultValue(pvValue.GetType());
return pvValue == null || pvValue.Equals(UtilMethods.GetDefaultValue(pvValue.GetType()));
}
private void InitParentList()
{
@@ -81,10 +81,32 @@ namespace SqlSugar
children = children.Distinct().ToList();
var x = this._Context.Storageable(children).WhereColumns(new string[] { pkColumn.PropertyName }).ToStorage();
var insertData = children = x.InsertList.Select(it => it.Item).ToList();
if (pkColumn.IsIdentity)
if (pkColumn.IsIdentity||pkColumn.OracleSequenceName.HasValue())
{
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
{
this._Context.Insertable(insertData).ExecuteCommand();

View File

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

View File

@@ -13,6 +13,7 @@ namespace SqlSugar
var parentEntity = _ParentEntity;
var parentList = _ParentList;
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>();
EntityColumnInfo thisPkColumn = GetPkColumnByNav(thisEntity, nav);
Check.Exception(thisPkColumn == null, $" Navigate {parentEntity.EntityName} : {name} is error ", $"导航实体 {parentEntity.EntityName} 属性 {name} 配置错误");
@@ -31,6 +32,17 @@ namespace SqlSugar
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);
childList.Add(childItem);
}

View File

@@ -131,7 +131,8 @@ namespace SqlSugar
lastShortName = shortName;
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 FirstPkColumn = last.ThisEntityInfo.Columns.FirstOrDefault(it => it.IsPrimarykey);
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.WhereIF(this.whereSql.HasValue(), GetWhereSql1(this.whereSql,lastShortName, joinInfos, queryable.SqlBuilder));
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;