Beispiel #1
0
        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);
 }