private void GenerateHasAndBelongsToRelationFromTargets(CodeTypeDeclaration classDeclaration, CodeNamespace nameSpace, ManyToManyRelation relationship) { if (String.IsNullOrEmpty(relationship.Table)) throw new ArgumentNullException( String.Format("Class {0} does not have a table name on it's many to many relation to class {1}", relationship.Source.Name, relationship.Target.Name)); if (String.IsNullOrEmpty(relationship.SourceColumn)) throw new ArgumentNullException( String.Format("Class {0} does not have a source column name on it's many to many relation to class {1}", relationship.Source.Name, relationship.Target.Name)); if (String.IsNullOrEmpty(relationship.TargetColumn)) throw new ArgumentNullException( String.Format("Class {0} does not have a target column name on it's many to many relation to class {1}", relationship.Source.Name, relationship.Target.Name)); CodeTypeDeclaration targetClass = GenerateClass(relationship.Target, nameSpace); string propertyName = String.IsNullOrEmpty(relationship.SourcePropertyName) ? NamingHelper.GetPlural(relationship.Source.Name) : NamingHelper.GetPlural(relationship.SourcePropertyName); string propertyType = String.IsNullOrEmpty(relationship.TargetPropertyType) ? GenericListInterface : relationship.TargetPropertyType; CodeMemberField memberField; if (!relationship.Source.AreRelationsGeneric()) memberField = GetMemberField(propertyName, propertyType, Accessor.Private, relationship.TargetAccess); else memberField = GetGenericMemberField(targetClass.Name, propertyName, propertyType, Accessor.Private, relationship.TargetAccess); classDeclaration.Members.Add(memberField); CodeMemberProperty memberProperty; if (String.IsNullOrEmpty(relationship.SourceDescription)) memberProperty = GetMemberProperty(memberField, NamingHelper.GetPlural(propertyName), true, true, relationship.Target.DoesImplementINotifyPropertyChanged(), null); else memberProperty = GetMemberProperty(memberField, NamingHelper.GetPlural(propertyName), true, true, relationship.Target.DoesImplementINotifyPropertyChanged(), relationship.SourceDescription); classDeclaration.Members.Add(memberProperty); memberProperty.CustomAttributes.Add(relationship.GetHasAndBelongsToAttributeFromSource()); }
private void GenerateHasAndBelongsToRelationFromTargets(CodeTypeDeclaration classDeclaration, CodeNamespace nameSpace, ManyToManyRelation relationship) { if (relationship.SourcePropertyGenerated) GenerateHasMany( classDeclaration, relationship.Source.Name, relationship.EffectiveSourcePropertyName, relationship.SourcePropertyType, relationship.EffectiveSourceAccess, relationship.SourceDescription, relationship.GetHasAndBelongsToAttributeFromSource(Context), relationship.Target.AreRelationsGeneric(), relationship.Source.DoesImplementINotifyPropertyChanged(), relationship.Source.DoesImplementINotifyPropertyChanging(), relationship.Target.Name, relationship.EffectiveTargetPropertyName, relationship.EffectiveAutomaticAssociations, true, relationship.GetCollectionIdAttribute(relationship.EffectiveSourceRelationType)); }