public static ISqlMapper Create(CreateSmartSqlMapperOptions options) { SmartSqlConfigOptions smartSqlConfigOptions = new SmartSqlConfigOptions { Settings = new SmartSql.Configuration.Settings { ParameterPrefix = "$", IgnoreParameterCase = true, IsCacheEnabled = false, }, Database = new Database { DbProvider = new SmartSql.DataSource.DbProvider { Name = options.ProviderName }, Write = options.DataSource, Reads = new List <DataSource>() }, SmartSqlMaps = new List <SqlMapSource>(), TypeHandlers = new List <TypeHandler> { new TypeHandler { Name = "Json", Type = "SmartSql.TypeHandler.JsonTypeHandler,SmartSql.TypeHandler" }, new TypeHandler { Name = "PGJson", Type = "SmartSql.TypeHandler.PostgreSql.JsonTypeHandler,SmartSql.TypeHandler.PostgreSql" }, new TypeHandler { Name = "PGJsonb", Type = "SmartSql.TypeHandler.PostgreSql.JsonTypeHandler,SmartSql.TypeHandler.PostgreSql", Properties = new Dictionary <string, object> { { "DataTypeName", "jsonb" } } } } }; if (!String.IsNullOrEmpty(options.SqlMapPath)) { smartSqlConfigOptions.SmartSqlMaps.Add(new SqlMapSource { Path = options.SqlMapPath, Type = ResourceType.Directory }); } var optionConfigBuilder = new OptionConfigBuilder(smartSqlConfigOptions, options.LoggerFactory); return(new SmartSqlBuilder() .UseLoggerFactory(options.LoggerFactory) .UseConfigBuilder(optionConfigBuilder) .UseAlias(options.Alias) .Build().SqlMapper); }
public static SmartSqlBuilder UseOptions(this SmartSqlBuilder builder , IServiceProvider serviceProvider) { var configOptions = serviceProvider .GetRequiredService <IOptionsSnapshot <SmartSqlConfigOptions> >() .Get(builder.Alias); var loggerFactory = serviceProvider.GetService <ILoggerFactory>(); var configBuilder = new OptionConfigBuilder(configOptions, loggerFactory); builder.UseConfigBuilder(configBuilder); return(builder); }