Multiple Same EntityRelations

Posts   
 
    
_johnnyboy
User
Posts: 12
Joined: 07-May-2009
# Posted on: 18-May-2009 04:19:07   

Hi,

If I were to add multiple relations to a RelationCollection that are all the same will the generator see that they are all the same and only use the relation once? Or will it try and add multiple relations to the same table?

Cheers

rdhatch
User
Posts: 198
Joined: 03-Nov-2007
# Posted on: 18-May-2009 05:06:55   

Hi John -

Perhaps this will help you. Using this method, you can determine whether or not the RelationCollection already contains the Relation you are about to add.


    Public Shared Function RelationsMatch(ByVal myRelation1 As IEntityRelation, ByVal myRelation2 As IEntityRelation) As Boolean
        Dim isIdentical As Boolean = True


        isIdentical = isIdentical And myRelation1.GetPKEntityFieldCore(0).ContainingObjectName = myRelation2.GetPKEntityFieldCore(0).ContainingObjectName
        isIdentical = isIdentical And myRelation1.GetFKEntityFieldCore(0).ContainingObjectName = myRelation2.GetFKEntityFieldCore(0).ContainingObjectName
        isIdentical = isIdentical And myRelation1.GetPKEntityFieldCore(0).ActualContainingObjectName = myRelation2.GetPKEntityFieldCore(0).ActualContainingObjectName
        isIdentical = isIdentical And myRelation1.GetFKEntityFieldCore(0).ActualContainingObjectName = myRelation2.GetFKEntityFieldCore(0).ActualContainingObjectName

        isIdentical = isIdentical And myRelation1.AliasEndEntity = myRelation2.AliasEndEntity
        isIdentical = isIdentical And myRelation1.AliasFKSide = myRelation2.AliasFKSide
        isIdentical = isIdentical And myRelation1.AliasLeftOperand = myRelation2.AliasLeftOperand
        isIdentical = isIdentical And myRelation1.AliasPKSide = myRelation2.AliasPKSide
        isIdentical = isIdentical And myRelation1.AliasRightOperand = myRelation2.AliasRightOperand
        isIdentical = isIdentical And myRelation1.AliasStartEntity = myRelation2.AliasStartEntity
        isIdentical = isIdentical And myRelation1.AmountFields = myRelation2.AmountFields
        'isIdentical = isIdentical And myRelation1.CustomFilter = myRelation2.CustomFilter
        isIdentical = isIdentical And myRelation1.CustomFilterReplacesOnClause = myRelation2.CustomFilterReplacesOnClause
        isIdentical = isIdentical And myRelation1.HintForJoins = myRelation2.HintForJoins
        'isIdentical = isIdentical And myRelation1.InheritanceInfoFkSideEntity = myRelation2.InheritanceInfoFkSideEntity
        'isIdentical = isIdentical And myRelation1.InheritanceInfoPkSideEntity = myRelation2.InheritanceInfoPkSideEntity
        isIdentical = isIdentical And myRelation1.IsHierarchyRelation = myRelation2.IsHierarchyRelation
        isIdentical = isIdentical And myRelation1.IsWeak = myRelation2.IsWeak
        isIdentical = isIdentical And myRelation1.JoinType = myRelation2.JoinType
        'isIdentical = isIdentical And myRelation1.LeftOperandInheritanceInfo = myRelation2.LeftOperandInheritanceInfo
        isIdentical = isIdentical And myRelation1.MappedFieldName = myRelation2.MappedFieldName
        'isIdentical = isIdentical And myRelation1.RightOperandInheritanceInfo = myRelation2.RightOperandInheritanceInfo
        isIdentical = isIdentical And myRelation1.StartElementIsPkSide = myRelation2.StartElementIsPkSide
        isIdentical = isIdentical And myRelation1.StartEntityIsPkSide = myRelation2.StartEntityIsPkSide
        isIdentical = isIdentical And myRelation1.TypeOfRelation = myRelation2.TypeOfRelation

        Return isIdentical
    End Function

Hope this helps!

Ryan