using Dpz.Core.Entity.Base;
using Dpz.Core.Entity.Base.Indexes;
namespace Dpz.Core.Public.Entity.V4;
public class PictureRecord : BaseEntity, IIndexedEntity<PictureRecord>
{
/// <summary>
/// 上传人
/// </summary>
public required UserInfo Creator { get; set; }
/// <summary>
/// 上传时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime UploadTime { get; set; }
/// <summary>
/// 标签
/// </summary>
public List<string> Tags { get; set; } = [];
/// <summary>
/// 图片描述
/// </summary>
public string? Description { get; set; }
/// <summary>
/// 图像类型
/// </summary>
[BsonRepresentation(BsonType.String)]
public PictureCategory Category { get; set; }
/// <summary>
/// 图片宽度
/// </summary>
public int Width { get; set; }
/// <summary>
/// 图片高度
/// </summary>
public int Height { get; set; }
/// <summary>
/// 访问地址
/// </summary>
public required string AccessUrl { get; set; }
/// <summary>
/// 图片大小
/// </summary>
public long Length { get; set; }
/// <summary>
/// MD5
/// </summary>
public string? Md5 { get; set; }
/// <summary>
/// 云储存上传时间
/// </summary>
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
public DateTime ObjectStorageUploadTime { get; set; }
/// <inheritdoc />
public static IReadOnlyList<EntityIndexDefinition> GetIndexDefinitions() =>
[new() { Fields = [EntityIndexField.Ascending<PictureRecord>(x => x.Tags)] }];
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个名为 PictureRecord 的实体类,用于表示图片记录的数据模型。让我详细解释一下这个代码:
类的基本结构
public class PictureRecord : BaseEntity, IIndexedEntity<PictureRecord>
- 继承自
BaseEntity:提供基础实体功能(如ID、创建时间等) - 实现
IIndexedEntity<PictureRecord>接口:支持数据库索引定义
主要属性说明
基本信息
- Creator:上传人信息(必需字段)
- UploadTime:上传时间,使用本地时区
- Description:图片描述(可选)
图片分类和标签
- Category:图像类型枚举,在数据库中以字符串形式存储
- Tags:标签列表,默认为空集合
图片技术参数
- Width/Height:图片尺寸
- Length:图片文件大小(字节)
- Md5:文件MD5哈希值(可选)
存储相关
- AccessUrl:图片访问地址(必需字段)
- ObjectStorageUploadTime:云存储上传时间
特殊特性
BSON 属性
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
[BsonRepresentation(BsonType.String)]
这些属性表明该实体设计用于 MongoDB 数据库:
- 时间字段使用本地时区
- 枚举类型以字符串形式存储
索引定义
public static IReadOnlyList<EntityIndexDefinition> GetIndexDefinitions() =>
[new() { Fields = [EntityIndexField.Ascending<PictureRecord>(x => x.Tags)] }];
为 Tags 字段创建升序索引,提高基于标签查询的性能。
使用场景
这个实体类适用于:
- 图片管理系统
- 内容管理平台
- 媒体资源库
- 需要图片元数据管理的应用
整体设计考虑了图片的完整生命周期,从上传到存储,再到检索和管理的各个方面。
AI 正在分析代码…
评论加载中...