protected virtual string GetCompositeIndexNameWithSchema(CompositeIndexAttribute compositeIndex, ModelDefinition modelDef) { return(compositeIndex.Name ?? GetIndexName(compositeIndex.Unique, (modelDef.IsInSchema ? modelDef.Schema + "_" + GetQuotedTableName(modelDef) : GetQuotedTableName(modelDef)).SafeVarName(), string.Join("_", compositeIndex.FieldNames.ToArray()))); }
/// <summary> Write a CompositeIndex XML Element from attributes in a member. </summary> public virtual void WriteCompositeIndex(System.Xml.XmlWriter writer, System.Reflection.MemberInfo member, CompositeIndexAttribute attribute, BaseAttribute parentAttribute, System.Type mappedClass) { writer.WriteStartElement( "composite-index" ); // Attribute: <class> writer.WriteAttributeString("class", attribute.Class==null ? DefaultHelper.Get_CompositeIndex_Class_DefaultValue(member) : GetAttributeValue(attribute.Class, mappedClass)); WriteUserDefinedContent(writer, member, null, attribute); System.Collections.ArrayList memberAttribs = GetSortedAttributes(member); int attribPos; // Find the position of the CompositeIndexAttribute (its <sub-element>s must be after it) for(attribPos=0; attribPos<memberAttribs.Count; attribPos++) if( memberAttribs[attribPos] is CompositeIndexAttribute && ((BaseAttribute)memberAttribs[attribPos]).Position == attribute.Position ) break; // found int i = attribPos + 1; // Element: <key-property> for(; i<memberAttribs.Count; i++) { BaseAttribute memberAttrib = memberAttribs[i] as BaseAttribute; if( IsNextElement(memberAttrib, parentAttribute, attribute.GetType()) || IsNextElement(memberAttrib, attribute, typeof(KeyPropertyAttribute)) ) break; // next attributes are 'elements' of the same level OR for 'sub-elements' else { if( memberAttrib is CompositeIndexAttribute ) break; // Following attributes are for this CompositeIndex if( memberAttrib is KeyPropertyAttribute ) WriteKeyProperty(writer, member, memberAttrib as KeyPropertyAttribute, attribute, mappedClass); } } WriteUserDefinedContent(writer, member, typeof(KeyPropertyAttribute), attribute); // Element: <key-many-to-one> for(; i<memberAttribs.Count; i++) { BaseAttribute memberAttrib = memberAttribs[i] as BaseAttribute; if( IsNextElement(memberAttrib, parentAttribute, attribute.GetType()) || IsNextElement(memberAttrib, attribute, typeof(KeyManyToOneAttribute)) ) break; // next attributes are 'elements' of the same level OR for 'sub-elements' else { if( memberAttrib is CompositeIndexAttribute ) break; // Following attributes are for this CompositeIndex if( memberAttrib is KeyManyToOneAttribute ) WriteKeyManyToOne(writer, member, memberAttrib as KeyManyToOneAttribute, attribute, mappedClass); } } WriteUserDefinedContent(writer, member, typeof(KeyManyToOneAttribute), attribute); writer.WriteEndElement(); }
protected virtual string GetCompositeIndexName(CompositeIndexAttribute compositeIndex, ModelDefinition modelDef) { return(compositeIndex.Name ?? GetIndexName(compositeIndex.Unique, modelDef.ModelName.SafeVarName(), string.Join("_", compositeIndex.FieldNames.ToArray()))); }