Exemplo n.º 1
0
        protected virtual string GetManyToManyTableName(PropertyPath subject)
        {
            var  manyToManyRelation = GetRelation(subject.LocalMember);
            var  fromMany           = manyToManyRelation.From;
            var  toMany             = manyToManyRelation.To;
            bool fromIsMaster       = DomainInspector.IsMasterManyToMany(fromMany, toMany);
            bool toIsMaster         = DomainInspector.IsMasterManyToMany(toMany, fromMany);

            fromMany = subject.GetContainerEntity(DomainInspector);
            string[] names;
            if (fromIsMaster == toIsMaster)
            {
                names = (from t in (new[] { fromMany, toMany }) orderby t.Name select t.Name).ToArray();
            }
            else
            {
                names = fromIsMaster ? new[] { fromMany.Name, toMany.Name } : new[] { toMany.Name, fromMany.Name };
            }
            return(GetTableNameForRelation(names));
        }
        protected virtual string GetManyToManyTableName(PropertyPath subject)
        {
            var  manyToManyRelation = GetRelation(subject.LocalMember);
            var  fromMany           = manyToManyRelation.From;
            var  toMany             = manyToManyRelation.To;
            bool fromIsMaster       = DomainInspector.IsMasterManyToMany(fromMany, toMany);
            bool toIsMaster         = DomainInspector.IsMasterManyToMany(toMany, fromMany);

            fromMany = subject.GetContainerEntity(DomainInspector);
            var explicitBidirectionalMember = DomainInspector.GetBidirectionalMember(fromMany, subject.LocalMember, toMany);

            if (explicitBidirectionalMember == null)
            {
                Relation[] twoRelations = GetTwoRelation(fromMany, fromIsMaster, toMany, toIsMaster);
                return(GetTableNameForRelation(twoRelations[0], twoRelations[1]));
            }
            else
            {
                RelationOn[] twoRelationOn = GetTwoRelationOn(fromMany, fromIsMaster, subject, toMany, toIsMaster, explicitBidirectionalMember);
                return(GetTableNameForRelationOnProperty(twoRelationOn[0], twoRelationOn[1]));
            }
        }