mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-08-20 00:44:19 +08:00
Compare commits
3 Commits
cecf286fc7
...
82dff2f2fd
Author | SHA1 | Date | |
---|---|---|---|
![]() |
82dff2f2fd | ||
![]() |
c775d69bfe | ||
![]() |
6ae9d93226 |
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -23,6 +23,7 @@ namespace SqlSugar
|
||||
NoLike = 13,
|
||||
EqualNull = 14,
|
||||
InLike=15,
|
||||
Range=16
|
||||
Range=16,
|
||||
RangeDate = 17
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user