public static List<CMetaobjectAttributeValue> sGetValuesByObject(decimal ObjectKey, IDatabaseProvider Provider)
        {
            List<CMetaobjectAttributeValue> R = new List<CMetaobjectAttributeValue>();

            Hashtable Params = new Hashtable();
            Params.Add(CDBConst.CONST_TABLE_FIELD_OBJ_KEY, ObjectKey);

            var SQL = "SELECT " + CDBConst.CONST_TABLE_FIELD_OBJ_KEY + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_ID + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_LOCALE + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_VALUE;
            SQL += " FROM " + CDBConst.CONST_TABLE_OBJECTS_ATTR;
            SQL += " WHERE " + CDBConst.CONST_TABLE_FIELD_OBJ_KEY + " = @p" + CDBConst.CONST_TABLE_FIELD_OBJ_KEY;
            SQL += " ORDER BY " + CDBConst.CONST_TABLE_FIELD_OBJ_KEY + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_ID;

            var T = Provider.QueryGetData(SQL, false, Params);
            if (T == null || T.Rows.Count == 0)
                return R;

            string PreviousID = "";
            string CurrentID = "";
            CMetaobjectAttributeValue Value = null;

            for (int i = 0; i < T.Rows.Count; i++)
            {
                CurrentID = T.Rows[i][1].PostProcessDatabaseValue<string>("");
                if (PreviousID != CurrentID)
                {
                    if (Value != null)
                        R.Add(Value);

                    Value = new CMetaobjectAttributeValue(Provider);
                    Value.ObjectKey = T.Rows[i][0].PostProcessDatabaseValue<decimal>(-1);
                    Value.AttributeID = T.Rows[i][1].PostProcessDatabaseValue<string>("");
                }

                byte[] Data = T.Rows[i][3].PostProcessDatabaseValue<byte[]>(new byte[0]);
                var Stream = Data.ToDataStream();
                var Obj = Stream.DeserializeBinaryStream<object>();

                Value.Values.Add(T.Rows[i][2].PostProcessDatabaseValue<int>(-1), Obj);
                PreviousID = CurrentID;
            }

            return R;
        }        
Exemplo n.º 2
0
        protected int _setValue(CMetaobjectAttributeValue Value)
        {
            var R = this._getValue(Value.AttributeID);
            if (R != null)
                this._values.Remove(R);
            this._values.Add(Value);

            return CErrors.ERR_SUC;
        }
        public static CMetaobjectAttributeValue sGetValue(decimal ObjectKey, string AttributeID, IDatabaseProvider Provider)
        {
            CMetaobjectAttributeValue R = null;

            Hashtable Params = new Hashtable();
            Params.Add(CDBConst.CONST_TABLE_FIELD_OBJ_KEY, ObjectKey);
            Params.Add(CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_ID, AttributeID);

            var SQL = "SELECT " + CDBConst.CONST_TABLE_FIELD_OBJ_KEY + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_ID + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_LOCALE + ", " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_VALUE;
            SQL += " FROM " + CDBConst.CONST_TABLE_OBJECTS_ATTR;
            SQL += " WHERE " + CDBConst.CONST_TABLE_FIELD_OBJ_KEY + " = @p" + CDBConst.CONST_TABLE_FIELD_OBJ_KEY;
            SQL += " AND " + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_ID + " = @p" + CDBConst.CONST_TABLE_FIELD_OBJ_ATTR_ID;

            var T = Provider.QueryGetData(SQL, false, Params);
            if (T == null || T.Rows.Count == 0)
                return null;

            R = new CMetaobjectAttributeValue(Provider);
            R.ObjectKey = T.Rows[0][0].PostProcessDatabaseValue<decimal>(-1);
            R.AttributeID = T.Rows[0][1].PostProcessDatabaseValue<string>("");

            for (int i = 0; i < T.Rows.Count; i++)
            {
                byte[] Data = T.Rows[i][3].PostProcessDatabaseValue<byte[]>(new byte[0]);
                var Stream = Data.ToDataStream();
                var Obj = Stream.DeserializeBinaryStream<object>();

                if (R.Values.ContainsKey(T.Rows[i][2].PostProcessDatabaseValue<int>(-1)))
                    continue;
                R.Values.Add(T.Rows[i][2].PostProcessDatabaseValue<int>(-1), Obj);
            }

            return R;
        }
Exemplo n.º 4
0
        protected int _setValue(string ID, int Locale, object Value)
        {
            var R = this._getValue(ID);
            if (R == null)
            {
                R = new CMetaobjectAttributeValue(this._provider)
                {
                    ObjectKey = this._objectKey,
                    AttributeID = ID
                };
                this._values.Add(R);
            }

            R[Locale] = Value;
            return CErrors.ERR_SUC;
        }