public IGenericBusinessObj GetRelation(System.Data.Objects.DataClasses.IEntityWithRelationships currentObject,
                                               System.Data.Objects.ObjectStateEntry currentState)
        {
            System.Data.Objects.DataClasses.IRelatedEnd currentEnd = GetRelatedEnd(currentObject);

            if (currentEnd == null)
            {
                throw new ApplicationException(string.Format("Could not find {0} on {1}", TargetRoleName, RelationshipName));
            }

            // loaded from DB then call load check to see if loaded before enumerating
            if (currentState.State == System.Data.EntityState.Modified || currentState.State == System.Data.EntityState.Unchanged)
            {
                if (currentEnd.IsLoaded == false)
                {
                    return(null);
                }
            }

            // find the first one and return it
            foreach (object childObject in currentEnd)
            {
                return(childObject as IGenericBusinessObj);
            }

            // if first not found then return
            return(null);
        }
 GetReference(System.Data.Objects.DataClasses.IEntityWithRelationships currentObject);
 public System.Data.Objects.DataClasses.IRelatedEnd GetRelatedEnd(System.Data.Objects.DataClasses.IEntityWithRelationships currentObject)
 {
     return(currentObject.RelationshipManager.GetRelatedEnd(RelationshipName, TargetRoleName));
 }
 public override System.Data.Objects.DataClasses.EntityReference GetReference(System.Data.Objects.DataClasses.IEntityWithRelationships currentObject)
 {
     return(currentObject.RelationshipManager.GetRelatedReference <T>(RelationshipName, TargetRoleName));
 }