GetFieldDefaultValue() 공개 정적인 메소드

public static GetFieldDefaultValue ( string ObjName, string FieldName ) : object
ObjName string
FieldName string
리턴 object
예제 #1
0
        public static FilterDefinition <T> Ne(string ObjName, string FieldName, object Value)
        {
            object defaultValue = MongoMapperHelper.GetFieldDefaultValue(ObjName, FieldName);

            FieldName = MongoMapperHelper.ConvertFieldName(ObjName, FieldName);

            FilterDefinition <T> query = null;
            Type type = Value.GetType();

            if (type.BaseType != null && type.BaseType.Name == "Enum")
            {
                type = typeof(int);
            }

            if (type == typeof(DateTime))
            {
                query = Builders <T> .Filter.Ne(FieldName, (DateTime)Value);

                if (defaultValue != null && (DateTime)defaultValue != (DateTime)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(int))
            {
                query = Builders <T> .Filter.Ne(FieldName, (int)Value);

                if (defaultValue != null && (int)defaultValue != (int)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(string))
            {
                query = Builders <T> .Filter.Ne(FieldName, (string)Value);

                if (defaultValue != null && (string)defaultValue != (string)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(long))
            {
                query = Builders <T> .Filter.Ne(FieldName, (long)Value);

                if (defaultValue != null && (long)defaultValue != (long)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(bool))
            {
                query = Builders <T> .Filter.Ne(FieldName, (bool)Value);

                if (defaultValue != null && (bool)defaultValue != (bool)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(double))
            {
                query = Builders <T> .Filter.Ne(FieldName, (double)Value);

                if (defaultValue != null && (double)defaultValue != (double)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }

            return(query);
        }
예제 #2
0
        public static FilterDefinition <T> Eq(string ObjName, string FieldName, object Value)
        {
            object defaultValue = MongoMapperHelper.GetFieldDefaultValue(ObjName, FieldName);

            FieldName = MongoMapperHelper.ConvertFieldName(ObjName, FieldName);

            FilterDefinition <T> query = null;
            Type type = Value.GetType();

            if (type == typeof(BsonNull))
            {
                query = Builders <T> .Filter.Eq(FieldName, BsonNull.Value);

                return(query);
            }

            if (type.BaseType != null && type.BaseType.Name == "Enum")
            {
                type = typeof(int);
                if ((int)Value < 0)
                {
                    return(new BsonDocument());
                }
            }

            if (type == typeof(string))
            {
                bool   isLike   = false;
                string txtValue = Value.ToString();

                if (txtValue.Trim() == "%")
                {
                    return(new BsonDocument());
                }

                if (txtValue.StartsWith("%") && txtValue.EndsWith("%"))
                {
                    Value  = String.Format("/{0}/", txtValue);
                    isLike = true;
                }
                else if (txtValue.StartsWith("%"))
                {
                    Value  = String.Format("/{0}$/", txtValue);
                    isLike = true;
                }
                else if (txtValue.EndsWith("%"))
                {
                    Value  = String.Format("/^{0}/", txtValue);
                    isLike = true;
                }

                if (isLike)
                {
                    query = Builders <T> .Filter.Regex(FieldName, new BsonRegularExpression(string.Format("{0}i", Value.ToString().Replace("%", ""))));

                    return(query);
                }
            }

            if (type == typeof(DateTime))
            {
                query = Builders <T> .Filter.Eq(FieldName, (DateTime)Value);

                if (defaultValue != null && (DateTime)defaultValue == (DateTime)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(int))
            {
                query = Builders <T> .Filter.Eq(FieldName, (int)Value);

                if (defaultValue != null && (int)defaultValue == (int)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(string))
            {
                query = Builders <T> .Filter.Eq(FieldName, (string)Value);

                if (defaultValue != null && (string)defaultValue == (string)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(long))
            {
                query = Builders <T> .Filter.Eq(FieldName, (long)Value);

                if (defaultValue != null && (long)defaultValue == (long)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(bool))
            {
                query = Builders <T> .Filter.Eq(FieldName, (bool)Value);

                if (defaultValue != null && (bool)defaultValue == (bool)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(double))
            {
                query = Builders <T> .Filter.Eq(FieldName, (double)Value);

                if (defaultValue != null && (double)defaultValue == (double)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }
            else if (type == typeof(Guid))
            {
                query = Builders <T> .Filter.Eq(FieldName, (Guid)Value);

                if (defaultValue != null && (Guid)defaultValue == (Guid)Value)
                {
                    query = Builders <T> .Filter.Or(query, Builders <T> .Filter.Exists(FieldName, false));
                }
            }

            return(query);
        }