Compare commits

...

3 Commits

Author SHA1 Message Date
sunkaixuan
82dff2f2fd Update UpdateNav 2025-08-14 13:46:14 +08:00
sunkaixuan
c775d69bfe Update mongodb 2025-08-14 12:46:04 +08:00
sunkaixuan
6ae9d93226 Add RangeDate 2025-08-13 16:18:31 +08:00
4 changed files with 57 additions and 5 deletions

View File

@ -13,7 +13,9 @@ namespace MongoDbTest
internal static void Init()
{
var db = DbHelper.GetNewDb();
db.DbMaintenance.TruncateTable<School, School>();
db.DbMaintenance.TruncateTable<Student, School>();
db.Insertable(new Student { Name = "jack" }).ExecuteCommand();
// 添加学校数据
var school = new School { Name = "TestSchool" };
var ids=db.Insertable(school).ExecuteReturnPkList<string>();
@ -24,9 +26,8 @@ namespace MongoDbTest
var student2 = new Student { Name = "TestStudentNoSchool", SchoolId =
ObjectId.GenerateNewId().ToString()
};
db.Insertable(student2).ExecuteCommand();
if (db.Queryable<Student>().First(it => it.SchoolId == ids.Last()).Name != "TestStudent") Cases.ThrowUnitError();
db.Updateable(db.Queryable<Student>().First(it => it.SchoolId == ids.Last())).ExecuteCommand();
if (db.Queryable<Student>().First(it => it.SchoolId == ids.Last()).Name != "TestStudent") Cases.ThrowUnitError();

View File

@ -85,7 +85,7 @@ namespace SqlSugar
this.Context = UpdateNavProvider._Context;
var navColumns = this.Context.EntityMaintenance.GetEntityInfo<Root>().Columns.Where(it => !ignoreColumns.Contains(it.PropertyName) || !ignoreColumns.Any(z => z.EqualCase(it.DbColumnName))).Where(it => it.Navigat != null).ToList();
var updateNavs = this;
UpdateNavMethodInfo methodInfo = updateNavs.IncludeByNameString(navColumns[0].PropertyName);
UpdateNavMethodInfo methodInfo = updateNavs.IncludeByNameString(navColumns[0].PropertyName,updateNavOptions);
foreach (var item in navColumns.Skip(1))
{
methodInfo = methodInfo.IncludeByNameString(item.PropertyName, updateNavOptions);

View File

@ -135,6 +135,9 @@ namespace SqlSugar
case ConditionalType.Range:
Range(builder, parameters, item, index, type, parameterName);
break;
case ConditionalType.RangeDate:
RangeDate(builder, parameters, item, index, type, parameterName);
break;
default:
break;
}
@ -221,6 +224,53 @@ namespace SqlSugar
parameters.Add(new SugarParameter(parameterNameFirst, firstValue));
parameters.Add(new SugarParameter(parameterNameLast, lastValue));
}
private static void RangeDate(StringBuilder builder, List<SugarParameter> parameters, ConditionalModel item, int index, string type, string parameterName)
{
var value = item.FieldValue;
var valueArray = (value + "").Split(',');
if (valueArray.Length != 2)
{
Check.ExceptionEasy($"The {item.FieldName} value is not a valid format, but is properly separated by a comma (1,2)", $"{item.FieldName} 值不是有效格式,正确是 1,2 这种中间逗号隔开");
}
var times = GetDateRange(valueArray.FirstOrDefault(), valueArray.LastOrDefault());
var parameterNameFirst = parameterName + "_01";
var parameterNameLast = parameterName + "_02";
builder.AppendFormat("( {0}>={1} AND {0}<{2} )", item.FieldName.ToSqlFilter(), parameterNameFirst, parameterNameLast);
parameters.Add(new SugarParameter(parameterNameFirst, times.start));
parameters.Add(new SugarParameter(parameterNameLast, times.end));
}
public static (DateTime start, DateTime end) GetDateRange(string date1Str, string date2Str)
{
var len = date2Str.Trim().Length;
if (date1Str.Length == 4)
{
date1Str = new DateTime(int.Parse(date1Str), 1, 1).ToString(SugarDateTimeFormat.Default);
}
if (date2Str.Length == 4)
{
date2Str = new DateTime(int.Parse(date2Str), 1, 1).ToString(SugarDateTimeFormat.Default);
}
if (!DateTime.TryParse(date1Str, out var date1))
throw new ArgumentException("date1 格式不正确");
if (!DateTime.TryParse(date2Str, out var date2))
throw new ArgumentException("date2 格式不正确");
if (len == 4) // yyyy
date2 = date2.AddYears(1);
else if (len == 7) // yyyy-MM
date2 = date2.AddMonths(1);
else if (len == 10) // yyyy-MM-dd
date2 = date2.AddDays(1);
else if (len == 13) // yyyy-MM-dd HH
date2 = date2.AddHours(1);
else if (len == 16) // yyyy-MM-dd HH:mm
date2 = date2.AddMinutes(1);
else
throw new ArgumentException("date2 格式不支持,只支持 年、年-月、年月日、年月日小时、年月日小时分钟");
return (date1, date2);
}
private static void InLike(StringBuilder builder, List<SugarParameter> parameters, ConditionalModel item, int index, string type, string parameterName)
{
var array = (item.FieldValue + "").Split(',').ToList();

View File

@ -23,6 +23,7 @@ namespace SqlSugar
NoLike = 13,
EqualNull = 14,
InLike=15,
Range=16
Range=16,
RangeDate = 17
}
}