跳到主要内容

IGeekFan.FreeKit

最小基础包,提供审计实体、依赖注入标记和领域事件。

功能概览

功能说明
审计实体统一主键、软删除、租户、审计字段
领域事件实体事件发布与订阅
依赖注入标记ISingletonDependency / IScopedDependency / ITransientDependency

安装

dotnet add package IGeekFan.FreeKit

审计实体

场景:多租户文章

using IGeekFan.FreeKit.Extras.AuditEntity;

public class Article : FullAuditEntity<Guid, Guid>, ITenant
{
public Guid? TenantId { get; set; }
public string Title { get; set; } = default!;
}

继承后自动获得:

字段说明
IdGuid 主键
CreateUserId / CreateTime创建人/时间
UpdateUserId / UpdateUserName / UpdateTime修改人/时间
DeleteUserId / DeleteUserName / DeleteTime删除人/时间
IsDeleted软删除标记
TenantId租户 ID

选择基类

基类适用场景
Entity<Guid>只需要主键
Entity<Guid>, ISoftDelete需要软删除
FullAuditEntity<Guid, Guid>完整审计

依赖注入标记

配合 Autofac 自动注册服务:

// 每次请求新实例
public class ArticleService : IScopedDependency
{
}

// 单例
public class CacheService : ISingletonDependency
{
}

// 瞬时
public class EmailSender : ITransientDependency
{
}

领域事件

场景:文章发布后发通知

using IGeekFan.FreeKit.Extras.Domain;

// 定义事件
public sealed record ArticlePublishedEvent(Guid ArticleId) : IDomainEvent;

// 领域对象触发
public sealed class Article : DomainEventBase
{
public Guid Id { get; set; }

public void Publish()
{
AddDomainEvent(new ArticlePublishedEvent(Id));
}

public override object[] GetKeys() => [Id];
}

// 事件处理器
public class ArticlePublishedHandler : INotificationHandler<ArticlePublishedEvent>
{
public Task Handle(ArticlePublishedEvent e, CancellationToken ct)
{
// 发送通知、更新统计等
return Task.CompletedTask;
}
}

故障排查

问题解决方案
依赖注入未生效检查是否配置了 Autofac
领域事件未触发实体需继承 DomainEventBase
审计字段缺失实体需继承 FullAuditEntity

相关文档