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; }
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; }
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; }