void InitialiseDefaults(Member member) { mapping.Member = member; mapping.SetDefaultValue(x => x.Name, member.Name); mapping.SetDefaultValue(x => x.TableName, mapping.ContainingEntityType.Name + member.Name); mapping.Key = key = new KeyMapping(); key.AddDefaultColumn(new ColumnMapping { Name = mapping.ContainingEntityType.Name + "_id" }); mapping.Index = index = new IndexMapping(); mapping.Index.As <IndexMapping>(ix => ix.SetDefaultValue(x => x.Type, new TypeReference(KeyType))); if (ValueType.IsSimpleType()) { // value type value (element) mapping.Element = element = new ElementMapping(); element.AddDefaultColumn(new ColumnMapping { Name = "Value" }); element.SetDefaultValue(x => x.Type, new TypeReference(typeof(TValue))); } else { // entity value mapping.Relationship = manyToMany = new ManyToManyMapping(); manyToMany.Class = new TypeReference(ValueType); manyToMany.AddDefaultColumn(new ColumnMapping { Name = ValueType.Name + "_id" }); manyToMany.ParentType = mapping.ContainingEntityType; manyToMany.ChildType = ValueType; } if (KeyType.IsSimpleType()) { mapping.Index.As <IndexMapping>(ix => ix.AddDefaultColumn(new ColumnMapping { Name = "Key" })); } else { mapping.Index.As <IndexMapping>(ix => { ix.IsManyToMany = true; ix.AddDefaultColumn(new ColumnMapping { Name = KeyType.Name + "_id" }); }); } }
private ICollectionRelationshipMapping CreateManyToMany(Member property, Type child, Type parent) { var mapping = new ManyToManyMapping { Class = new TypeReference(property.PropertyType.GetGenericArguments()[0]), ContainingEntityType = parent }; mapping.AddDefaultColumn(new ColumnMapping { Name = child.Name + "_id" }); return(mapping); }