private CachedSchema NewCachedSchema(string name, SchemaSource source) { XElement config = InstanceConfigGetter.GetConfig(name); CachedSchema cachedSchema; if (source == SchemaSource.DbSchemaProvider) { cachedSchema = new CachedSchema() { DbSchema = GetDbSchemaProvider(name, config).GetDbSchema() }; } else { cachedSchema = new CachedSchema(Cache[name]); } if (source <= SchemaSource.DbSchemaReviser) { cachedSchema.RevisedDbSchema = GetDbSchemaReviser(config).Revise(cachedSchema.DbSchema); } if (source <= SchemaSource.Mapper) { cachedSchema.MappedSchema = GetMapper(config).Map(cachedSchema.RevisedDbSchema); } if (source <= SchemaSource.SchemaReviser) { XElement revisedSchema = GetSchemaReviser(config).Revise(cachedSchema.MappedSchema); DateTime utcNow = DateTime.UtcNow; cachedSchema.RevisedSchema = revisedSchema; } return(cachedSchema); }
protected SchemaDeltaFinder CreateSchemaDeltaFinder(string name) { XElement config = InstanceConfigGetter.GetConfig(name); if (config.Element("schemaDeltaFinder") == null) { return(new ConfigSchemaDeltaFinder(name, string.Empty, string.Empty)); } XElement xSchemaDeltaFinder = new XElement(config.Element("schemaDeltaFinder")); xSchemaDeltaFinder.Element("name").SetAttributeValue("value", name); string type = xSchemaDeltaFinder.Attribute("type").Value.Split(',')[0].Trim(); switch (type) { case "XData.Data.Schema.ConfigSchemaDeltaFinder": string excludedAttributes = xSchemaDeltaFinder.Element("excludedAttributes").Attribute("value").Value; string separator = xSchemaDeltaFinder.Element("separator").Attribute("value").Value; return(new ConfigSchemaDeltaFinder(name, excludedAttributes, separator)); default: break; } ObjectCreator objectCreator = new ObjectCreator(xSchemaDeltaFinder); object obj = objectCreator.CreateInstance(); return(obj as SchemaDeltaFinder); }
public void Update(string name) { XElement config = InstanceConfigGetter.GetConfig(name); lock (LockObj) { Cache[name] = config; } }