public SchemaStore GetStore(DotNotation notation = null, IEnumerable <object> contracts = null) { BindingMetadataBuilder bindingBuilder = new BindingMetadataBuilder(); ReferenceMetadataBuilder referenceBuilder = new ReferenceMetadataBuilder(); TableMetadataBuilder tableBuilder = new TableMetadataBuilder(); SchemaStore store = new SchemaStore(notation ?? new DotNotation(), bindingBuilder, referenceBuilder, tableBuilder); if (contracts != null) { foreach (var contract in contracts) { if (contract is IRelationContractResolver relationResolver) { store.Use(relationResolver); } if (contract is IBindingContractResolver bindingResolver) { store.Use(bindingResolver); } if (contract is ITableContractResolver tableResolver) { store.Use(tableResolver); } } } return(store); }
public static ISchemaStore Use(this ISchemaStore store, ITableContractResolver resolver) { if (store == null) { throw new ArgumentNullException(nameof(store)); } if (resolver == null) { throw new ArgumentNullException(nameof(resolver)); } TableMetadataBuilder builder = store.Builders.FirstOfType <TableMetadataBuilder>(); builder?.Add(resolver); return(store); }
public SqlServerStore(string nameOrConnectionString, Action <TableMetadataBuilder <SqlDbType> > buildTableConfiguration = null) : base(new[] { typeof(string) }) { ConnectionString = nameOrConnectionString.NonEmptyOrNull() ?? throw new ArgumentNullException(nameof(nameOrConnectionString));; var connectionStringName = nameOrConnectionString.GetConnectionStringName(); if (!string.IsNullOrEmpty(connectionStringName)) { ConnectionString = new AppConfigRepository().GetConnectionString(connectionStringName).NonEmptyOrNull() ?? throw new ArgumentNullException(nameof(nameOrConnectionString));; } var tableMetadataBuilder = TableMetadataBuilder <SqlDbType> .Create() .SchemaName("dbo") .TableName(nameof(Setting)) .Column(nameof(Setting.Name), SqlDbType.NVarChar, 300) .Column(nameof(Setting.Value), SqlDbType.NVarChar, -1); buildTableConfiguration?.Invoke(tableMetadataBuilder); TableMetadata = tableMetadataBuilder.Build(); _settingCommandFactory = new SettingCommandFactory(TableMetadata); }
public SQLiteStore(string nameOrConnectionString, Action <TableMetadataBuilder <DbType> > tableConfigBuilder = null) : base(new[] { typeof(string) }) { ConnectionString = nameOrConnectionString.NonEmptyOrNull() ?? throw new ArgumentNullException(nameof(nameOrConnectionString)); var connectionStringName = nameOrConnectionString.GetConnectionStringName(); if (!string.IsNullOrEmpty(connectionStringName)) { ConnectionString = (new AppConfigRepository().GetConnectionString(connectionStringName)).NonEmptyOrNull() ?? throw new ArgumentNullException(nameof(nameOrConnectionString));; } var settingTableConfigBuilder = TableMetadataBuilder <DbType> .Create() .TableName(nameof(Setting)) .Column(nameof(Setting.Name), DbType.String, 300) .Column(nameof(Setting.Value), DbType.String, -1) .Column(SettingTag.Config, DbType.String, 50); tableConfigBuilder?.Invoke(settingTableConfigBuilder); SettingTableMetadata = settingTableConfigBuilder.Build(); _settingCommandFactory = new SettingCommandFactory(SettingTableMetadata); }