Exemplo n.º 1
0
    /// <summary>
    /// 添加 <typeparamref name="TSeeder"/>。
    /// </summary>
    /// <typeparam name="TSeeder">指定的种子机类型。</typeparam>
    /// <param name="builder">给定的 <see cref="DataExtensionBuilder"/>。</param>
    /// <returns>返回 <see cref="DataExtensionBuilder"/>。</returns>
    public static DataExtensionBuilder AddSeeder <TSeeder>(this DataExtensionBuilder builder)
        where TSeeder : class, IAccessorSeeder
    {
        builder.TryAddOrReplaceService <IAccessorSeeder, TSeeder>();

        return(builder);
    }
Exemplo n.º 2
0
    /// <summary>
    /// 添加 <see cref="IAccessorInitializer"/>(支持多次添加)。
    /// </summary>
    /// <typeparam name="TInitializer">指定的初始化器类型。</typeparam>
    /// <param name="builder">给定的 <see cref="DataExtensionBuilder"/>。</param>
    /// <returns>返回 <see cref="DataExtensionBuilder"/>。</returns>
    public static DataExtensionBuilder AddInitializer <TInitializer>(this DataExtensionBuilder builder)
        where TInitializer : class, IAccessorInitializer
    {
        builder.TryAddEnumerableServices <IAccessorInitializer, TInitializer>();

        return(builder);
    }
Exemplo n.º 3
0
    private static DataExtensionBuilder AddAccessing(this DataExtensionBuilder builder)
    {
        builder.TryAddOrReplaceService <IAccessorManager, InternalAccessorManager>();
        builder.TryAddOrReplaceService <IAccessorMigrator, InternalAccessorMigrator>();
        builder.TryAddOrReplaceService <IAccessorResolver, InternalAccessorResolver>();

        return(builder);
    }
        static DataExtensionBuilderHelper()
        {
            if (_builder is null)
            {
                var services = new ServiceCollection();
                _builder = services.AddLibrameCore().AddData();
            }

            if (_services is null)
            {
                _services = _builder.Services.BuildServiceProvider();
            }
        }
Exemplo n.º 5
0
    /// <summary>
    /// 注册 Librame 数据扩展构建器。
    /// </summary>
    /// <param name="parentBuilder">给定的 <see cref="IExtensionBuilder"/>。</param>
    /// <param name="setupOptions">给定可用于设置 <see cref="DataExtensionOptions"/> 选项的动作(可选;为空则不设置)。</param>
    /// <param name="configuration">给定可用于 <see cref="DataExtensionOptions"/> 选项的配置对象(可选;为空则不配置)。</param>
    /// <returns>返回 <see cref="DataExtensionBuilder"/>。</returns>
    public static DataExtensionBuilder AddData(this IExtensionBuilder parentBuilder,
                                               Action <DataExtensionOptions>?setupOptions = null, IConfiguration?configuration = null)
    {
        // 配置扩展选项
        parentBuilder.ConfigureExtensionOptions(setupOptions, configuration);

        var builder = new DataExtensionBuilder(parentBuilder);

        builder
        .AddAccessing()
        .AddAuditing()
        .AddIdentification()
        .AddSharding()
        .AddStoring()
        .AddValueConversion();

        return(builder);
    }
Exemplo n.º 6
0
    private static DataExtensionBuilder AddValueConversion(this DataExtensionBuilder builder)
    {
        builder.TryAddOrReplaceService <IEncryptionConverterFactory, InternalEncryptionConverterFactory>();

        return(builder);
    }
Exemplo n.º 7
0
    private static DataExtensionBuilder AddStoring(this DataExtensionBuilder builder)
    {
        builder.TryAddOrReplaceService(typeof(IStore <>), typeof(BaseStore <>));

        return(builder);
    }
Exemplo n.º 8
0
    private static DataExtensionBuilder AddSharding(this DataExtensionBuilder builder)
    {
        builder.TryAddOrReplaceService <IShardingManager, InternalShardingManager>();

        return(builder);
    }
Exemplo n.º 9
0
    private static DataExtensionBuilder AddIdentification(this DataExtensionBuilder builder)
    {
        builder.TryAddOrReplaceService <IIdGeneratorFactory, InternalIdGeneratorFactory>();

        return(builder);
    }
 public InternalAccessorResolver(DataExtensionBuilder builder, IServiceProvider provider)
 {
     _builder  = builder;
     _provider = provider;
 }