private bool IsNullRelationshipAssignment(MappingEntity entity, EntityAssignment assignment)
 {
     if (this.mapping.IsRelationship(entity, assignment.Member))
     {
         var cex = assignment.Expression as ConstantExpression;
         if (cex != null && cex.Value == null)
         {
             return(true);
         }
     }
     return(false);
 }
            bool IsNullRelationshipAssignment(IEntityMapping entity, EntityAssignment assignment)
            {
                var mm = entity.Get(assignment.Member);

                if (mm != null && mm.IsRelationship)
                {
                    var cex = assignment.Expression as ConstantExpression;
                    if (cex != null && cex.Value == null)
                    {
                        return(true);
                    }
                }
                return(false);
            }
        public override EntityExpression IncludeMembers(EntityExpression entity, Func <MemberInfo, bool> fnIsIncluded)
        {
            var  assignments = this.GetAssignments(entity.Expression).ToDictionary(ma => ma.Member.Name);
            bool anyAdded    = false;

            foreach (var mi in this.mapping.GetMappedMembers(entity.Entity))
            {
                EntityAssignment ea;
                bool             okayToInclude = !assignments.TryGetValue(mi.Name, out ea) || IsNullRelationshipAssignment(entity.Entity, ea);
                if (okayToInclude && fnIsIncluded(mi))
                {
                    ea = new EntityAssignment(mi, this.GetMemberExpression(entity.Expression, entity.Entity, mi));
                    assignments[mi.Name] = ea;
                    anyAdded             = true;
                }
            }
            if (anyAdded)
            {
                return(new EntityExpression(entity.Entity, this.BuildEntityExpression(entity.Entity, assignments.Values.ToList())));
            }
            return(entity);
        }
Exemple #4
0
 private bool IsNullRelationshipAssignment(MappingEntity entity, EntityAssignment assignment)
 {
     if (this.mapping.IsRelationship(entity, assignment.Member))
     {
         var cex = assignment.Expression as ConstantExpression;
         if (cex != null && cex.Value == null)
             return true;
     }
     return false;
 }
Exemple #5
0
 public override EntityExpression IncludeMembers(EntityExpression entity, Func<MemberInfo, bool> fnIsIncluded)
 {
     var assignments = this.GetAssignments(entity.Expression).ToDictionary(ma => ma.Member.Name);
     bool anyAdded = false;
     foreach (var mi in this.mapping.GetMappedMembers(entity.Entity))
     {
         EntityAssignment ea;
         bool okayToInclude = !assignments.TryGetValue(mi.Name, out ea) || IsNullRelationshipAssignment(entity.Entity, ea);
         if (okayToInclude && fnIsIncluded(mi))
         {
             ea = new EntityAssignment(mi, this.GetMemberExpression(entity.Expression, entity.Entity, mi));
             assignments[mi.Name] = ea;
             anyAdded = true;
         }
     }
     if (anyAdded)
     {
         return new EntityExpression(entity.Entity, this.BuildEntityExpression(entity.Entity, assignments.Values.ToList()));
     }
     return entity;
 }