/// <summary> /// Generate XSD schema info for entity types. /// One complexType is registered for each type, which contains the fields and relationships of that type. /// One group is registered for each type, which contains the type itself, and all derived types that may be used in its place. /// </summary> private void AddTypes() { var types = EffectiveTypes(_schemaManager.GetInstancesOfType(A(Aliases.Type))); foreach (EffectiveType entityType in types) { // Ensure all types inherit something if (!_schemaManager.GetAncestors(entityType.Type).Skip(1).Any()) { if (entityType.Alias != Aliases2.Resource) { throw new BuildException(string.Format("{0} does not inherit from anything.", entityType.Alias), entityType.Alias); } } // Generate XSD XmlSchema xsd = GetSchema(entityType.Alias.Namespace); AddTypeElement(entityType, xsd); AddTypeMembers(entityType, xsd); AddTypeDescendents(entityType, xsd); } }
/// <summary> /// Gets the fields with defaults. /// </summary> /// <param name="type">The type.</param> /// <returns></returns> private IEnumerable <FieldData> GetFieldsWithDefaults(Entity type) { List <FieldData> result; if (!_defaultsOnType.TryGetValue(type, out result)) { Alias defaultValueAlias = Aliases.CoreAlias("defaultValue"); result = (from ancType in SchemaResolver.GetAncestors(type) from field in SchemaResolver.GetDeclaredFields(ancType) let defaultValue = SchemaResolver.GetStringFieldValue(field, defaultValueAlias) where defaultValue != null select new FieldData { Field = field, Value = defaultValue }).ToList( ); _defaultsOnType[type] = result; } return(result); }