Пример #1
0
        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);
        }
Пример #2
0
        public SchemaStore GetSchemas()
        {
            RelationMetadataBuilder  relationBuilder  = new RelationMetadataBuilder();
            BindingMetadataBuilder   bindingBuilder   = new BindingMetadataBuilder();
            ReferenceMetadataBuilder referenceBuilder = new ReferenceMetadataBuilder();

            SchemaStore store = new SchemaStore(new DotNotation(), relationBuilder, bindingBuilder, referenceBuilder);

            bindingBuilder.Add(new SqliteContractResolver());

            return(store);
        }
        public static ISchemaStore Use(this ISchemaStore store, IBindingContractResolver resolver)
        {
            if (store == null)
            {
                throw new ArgumentNullException(nameof(store));
            }

            if (resolver == null)
            {
                throw new ArgumentNullException(nameof(resolver));
            }

            BindingMetadataBuilder builder = store.Builders.FirstOfType <BindingMetadataBuilder>();

            builder?.Add(resolver);

            return(store);
        }
Пример #4
0
        public static void AddContract(this ISchemaStore schemas, IBindingContractResolver contract)
        {
            if (schemas == null)
            {
                throw new ArgumentNullException(nameof(schemas));
            }

            if (contract == null)
            {
                throw new ArgumentNullException(nameof(contract));
            }

            BindingMetadataBuilder builder = schemas.OfType <BindingMetadataBuilder>().FirstOrDefault();

            if (builder == null)
            {
                throw new InvalidOperationException("No binding metadata builder found.");
            }

            builder.Add(contract);
        }