docs: add xml comments and update ignore rules
This commit is contained in:
@@ -16,6 +16,11 @@ internal abstract class DesignTimeDbContextFactoryBase<TContext> : IDesignTimeDb
|
||||
private readonly string _dataSourceName;
|
||||
private readonly string? _connectionStringEnvVar;
|
||||
|
||||
/// <summary>
|
||||
/// 初始化设计时工厂基类。
|
||||
/// </summary>
|
||||
/// <param name="dataSourceName">数据源名称。</param>
|
||||
/// <param name="connectionStringEnvVar">连接串环境变量名。</param>
|
||||
protected DesignTimeDbContextFactoryBase(string dataSourceName, string? connectionStringEnvVar = null)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(dataSourceName))
|
||||
@@ -27,8 +32,14 @@ internal abstract class DesignTimeDbContextFactoryBase<TContext> : IDesignTimeDb
|
||||
_connectionStringEnvVar = connectionStringEnvVar;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 创建设计时 DbContext。
|
||||
/// </summary>
|
||||
/// <param name="args">命令行参数。</param>
|
||||
/// <returns>DbContext 实例。</returns>
|
||||
public TContext CreateDbContext(string[] args)
|
||||
{
|
||||
// 1. 构建 DbContextOptions
|
||||
var optionsBuilder = new DbContextOptionsBuilder<TContext>();
|
||||
optionsBuilder.UseNpgsql(
|
||||
ResolveConnectionString(),
|
||||
@@ -38,12 +49,20 @@ internal abstract class DesignTimeDbContextFactoryBase<TContext> : IDesignTimeDb
|
||||
npgsql.EnableRetryOnFailure();
|
||||
});
|
||||
|
||||
// 2. 创建上下文
|
||||
return CreateContext(
|
||||
optionsBuilder.Options,
|
||||
new DesignTimeTenantProvider(),
|
||||
new DesignTimeCurrentUserAccessor());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 由子类实现的上下文工厂方法。
|
||||
/// </summary>
|
||||
/// <param name="options">上下文选项。</param>
|
||||
/// <param name="tenantProvider">租户提供器。</param>
|
||||
/// <param name="currentUserAccessor">当前用户访问器。</param>
|
||||
/// <returns>DbContext 实例。</returns>
|
||||
protected abstract TContext CreateContext(
|
||||
DbContextOptions<TContext> options,
|
||||
ITenantProvider tenantProvider,
|
||||
@@ -138,12 +157,22 @@ internal abstract class DesignTimeDbContextFactoryBase<TContext> : IDesignTimeDb
|
||||
|
||||
private sealed class DesignTimeTenantProvider : ITenantProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// 设计时返回默认租户 ID。
|
||||
/// </summary>
|
||||
/// <returns>默认租户 ID。</returns>
|
||||
public long GetCurrentTenantId() => 0;
|
||||
}
|
||||
|
||||
private sealed class DesignTimeCurrentUserAccessor : ICurrentUserAccessor
|
||||
{
|
||||
/// <summary>
|
||||
/// 设计时用户标识。
|
||||
/// </summary>
|
||||
public long UserId => 0;
|
||||
/// <summary>
|
||||
/// 设计时用户鉴权标识。
|
||||
/// </summary>
|
||||
public bool IsAuthenticated => false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,10 @@ namespace TakeoutSaaS.Infrastructure.Common.Persistence;
|
||||
/// </summary>
|
||||
internal static class ModelBuilderCommentExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 将 XML 注释应用到实体与属性的 Comment。
|
||||
/// </summary>
|
||||
/// <param name="modelBuilder">模型构建器。</param>
|
||||
public static void ApplyXmlComments(this ModelBuilder modelBuilder)
|
||||
{
|
||||
foreach (var entityType in modelBuilder.Model.GetEntityTypes())
|
||||
@@ -51,6 +55,12 @@ internal static class ModelBuilderCommentExtensions
|
||||
{
|
||||
private static readonly ConcurrentDictionary<Assembly, IReadOnlyDictionary<string, string>> Cache = new();
|
||||
|
||||
/// <summary>
|
||||
/// 尝试获取成员的摘要注释。
|
||||
/// </summary>
|
||||
/// <param name="member">反射成员。</param>
|
||||
/// <param name="summary">输出的摘要文本。</param>
|
||||
/// <returns>存在摘要则返回 true。</returns>
|
||||
public static bool TryGetSummary(MemberInfo member, out string? summary)
|
||||
{
|
||||
summary = null;
|
||||
|
||||
Reference in New Issue
Block a user