public override PropertyValue GetValue(IEntity entity, IProperty property)
        {
            var enumProperty = property.As <EnumProperty>();
            var value        = entity.InternalGetValue(enumProperty.Reference);

            return(value.IsNullOrEmpty() ? null : PropertyValueHelper.NewValue(((Enum)value).GetDescription()));
        }
        public override PropertyValue GetValue(IEntity entity, IProperty property)
        {
            var entityProperty = property.As <EntitySetProperty>();
            var instanceName   = GetInstanceName(entity, entityProperty.RelationType);
            var environment    = GetEnvironment(entity);

            using (var context = new InternalContext(instanceName))
            {
                context.Environment  = environment;
                context.InstanceName = instanceName;

                var    provider   = context.CreateRepositoryProvider(entityProperty.RelationType);
                var    expression = BuidRelationExpression(entity, entityProperty);
                object result     = null;
                if (expression != null)
                {
                    result = Execute(provider.Queryable, expression);
                    var querySetType = typeof(EntitySet <>).MakeGenericType(entityProperty.RelationType);
                    var list         = querySetType.New(new[] { result });

                    //设置实体集所属的实体Owner
                    list.As <IEntityRelation>(e => e.Owner = new EntityOwner(entity, property));

                    return(PropertyValueHelper.NewValue(list));
                }

                return(PropertyValueHelper.NewValue(result));
            }
        }
示例#3
0
 private void Condition(string field, object value, QueryOperator oper = QueryOperator.Equals)
 {
     if (m_parameters == null)
     {
         m_builder.AppendFormat(" {0} {1} {2}", Quote(field), GetOperatorChar(oper), ConvertValue(value));
     }
     else
     {
         m_builder.AppendFormat(" {0} {1} {2}p{3}", Quote(field), GetOperatorChar(oper), m_syntax.ParameterPrefix, m_parameters.Count);
         var parameter = new Parameter(string.Format("p{0}", m_parameters.Count));
         value.As <PropertyValue>(v => PropertyValueHelper.Set(v, parameter), () => parameter.Value = value);
         m_parameters.Add(parameter);
     }
 }
        public override PropertyValue GetValue(IEntity entity, IProperty property)
        {
            var referenceProperty = property.As <ReferenceProperty>();
            var instanceName      = GetInstanceName(entity, referenceProperty.RelationType);
            var environment       = GetEnvironment(entity);

            using (var context = new InternalContext(instanceName))
            {
                context.As <IEntityPersistentEnvironment>(s => s.Environment        = environment);
                context.As <IEntityPersistentInstanceContainer>(s => s.InstanceName = instanceName);

                var    provider   = context.CreateRepositoryProvider(referenceProperty.RelationType);
                var    expression = BuidRelationExpression(entity, referenceProperty);
                object result     = null;
                if (expression != null)
                {
                    result = Execute(provider.Queryable, expression);
                }

                return(PropertyValueHelper.NewValue(result));
            }
        }
示例#5
0
        private EntityQueryBuilder SetByInsert(params QueryValue[] values)
        {
            var flag = new AssertFlag();

            m_builder.Append("(");
            var realValues = values.Where(s => s.Property is ISavedProperty);

            foreach (var value in realValues)
            {
                if (!flag.AssertTrue())
                {
                    m_builder.Append(", ");
                }
                m_builder.Append(QuoteColumn(value.Property));
            }
            m_builder.Append(") VALUES(");
            flag.Reset();
            foreach (var value in realValues)
            {
                if (!flag.AssertTrue())
                {
                    m_builder.Append(", ");
                }
                if (m_parameters == null)
                {
                    m_builder.Append(ConvertValue(value.Value));
                }
                else
                {
                    m_builder.AppendFormat("{0}p{1}", m_syntax.ParameterPrefix, m_parameters.Count);
                    var parameter = new Parameter(string.Format("p{0}", m_parameters.Count));
                    value.Value.As <PropertyValue>(v => PropertyValueHelper.Set(v, parameter), () => parameter.Value = value.Value);
                    m_parameters.Add(parameter);
                }
            }
            m_builder.Append(")");
            return(this);
        }