xiangning bdd1ad39bb fix: PlatformInfrastructureModule 补 UseSnakeCaseNamingConvention
根因:PlatformDbContext 注册时缺少 UseSnakeCaseNamingConvention,
导致 EF 查询用 PascalCase 列名("Id")但实际表是 snake_case("id"),
报 column u.Id does not exist。
2026-07-03 11:47:37 +08:00

31 lines
1.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Volo.Abp.DependencyInjection;
namespace BuildFlow.Host.Configuration;
/// <summary>
/// 注册 ABP 与 ASP.NET Core 管线之间的双向访问桥。
/// ABP 模块的 <c>OnApplicationInitialization</c> 通过 <c>context.GetApplicationBuilder()</c> /
/// <c>context.GetEndpointRouteBuilder()</c> 取回这些 ObjectAccessor,从而在 ABP 模块里装配中间件、
/// 映射 Hub 等。每个 accessor 同时注册「具体类型」与 <c>IObjectAccessor&lt;T&gt;</c> 接口两份,
/// 兼容 ABP 内部按接口解析与宿主按具体类型解析两种获取方式。
/// </summary>
public static class HostObjectAccessors
{
public static IServiceCollection AddHostObjectAccessors(this IServiceCollection services)
{
services.AddAccessor(new ObjectAccessor<IApplicationBuilder>());
services.AddAccessor(new ObjectAccessor<WebApplication>());
services.AddAccessor(new ObjectAccessor<IHost>());
services.AddAccessor(new ObjectAccessor<IEndpointRouteBuilder>());
return services;
}
/// <summary>同时注册 accessor 的具体类型与 <see cref="IObjectAccessor{T}"/> 接口,单一注册点避免重复。</summary>
private static void AddAccessor<T>(this IServiceCollection services, ObjectAccessor<T> accessor)
where T : class
{
services.AddSingleton(accessor);
services.AddSingleton<IObjectAccessor<T>>(accessor);
}
}