private EntityRelationSide GetRelationSide(ILog log, INavigationPropertyNameData <TTable, TColumn> nameData) { var sideData = nameData.TypeSide; var otherSideData = nameData.NameSide; var name = GetName(nameData, _relationshipExtractor.GetNavigationPropertyName, s => sideData.Entity.Properties.Any(p => p.Name == s), log, string.Format("Duplicate property name '{{0}}' in entity '{0}'.", sideData.Entity.Name)); NavigationPropertyEntityInfo property = null; if (!sideData.IsUndirect) { switch (sideData.Type) { case NavigationType.Optional: case NavigationType.Required: property = NavigationPropertyEntityInfo.One(name, otherSideData.Entity); break; case NavigationType.Many: property = NavigationPropertyEntityInfo.Many(name, otherSideData.Entity); break; default: throw new ArgumentOutOfRangeException(); } } return(new EntityRelationSide(sideData.Entity, property, sideData.Type, sideData.GetKeyProperties())); }
public virtual string GetNavigationPropertyName(INavigationPropertyNameData <TTable, TColumn> data, Func <string, bool> checkDuplicates) { return(data.TypeSide.Type == NavigationType.Many ? data.NameSide.Table.Content.CodeNamePlural : data.NameSide.Table.Content.CodeName); }