src/02_Data/Data.Abstractions/Query/ShardingByMonthQueryDto.cs
(完整代码) 1KBusing System;
using System.ComponentModel.DataAnnotations;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
namespace Mkh.Data.Abstractions.Query;
/// <summary>
/// 按月分表查询对象
/// </summary>
public class ShardingByMonthQueryDto : QueryDto
{
/// <summary>
/// 开始日期
/// </summary>
[ShardingQueryValidation]
public DateTime StartDate { get; set; }
/// <summary>
/// 结束日期
/// </summary>
public DateTime EndDate { get; set; }
}
/// <summary>
/// 分表验证
/// </summary>
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)]
internal class ShardingQueryValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var localizer = validationContext.GetService<IStringLocalizer<ShardingQueryValidationAttribute>>()!;
if (value == null)
return new ValidationResult(localizer["请选择开始日期"]);
var endDateValue = validationContext.ObjectType.GetProperty(nameof(ShardingByMonthQueryDto.EndDate))!.GetValue(validationContext.ObjectInstance);
if (endDateValue == null)
return new ValidationResult(localizer["请选择结束日期"]);
var beginDate = value.ToDate();
var endDate = endDateValue.ToDate();
if (beginDate.Year != endDate.Year || beginDate.Month != endDate.Month)
{
return new ValidationResult(localizer["日期不能跨月查询"]);
}
return ValidationResult.Success;
}
}
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
