public bool Remove(string userName, string roleName) { if (ReadOnly) { throw new NotSupportedException("Role storage is read only."); } return(Dalc.Delete(new Query(UserRoleSourceName, (QField)ResolveFieldName("User") == (QConst)userName & (QField)ResolveFieldName("Role") == (QConst)roleName)) > 0); }
private void DeleteInternal(string name, string tableName, string keyFieldName) { if (name.Length > 0) { name = FormatPath(name); } Query q = new Query(tableName); q.Condition = new QueryConditionNode((QField)keyFieldName, Conditions.Equal, (QConst)name); Dalc.Delete(q); }
public void Set(object fromKey, IEnumerable toKeys) { // load existing keys var currentToKeys = GetToKeys(fromKey); // remove missed relations var fromCondition = ComposeFromCondition(fromKey); var deleteCondition = fromCondition; var toKeysArr = toKeys.Cast <object>().ToArray(); if (toKeysArr.Length > 0) { deleteCondition = new QueryConditionNode((QField)ToFieldName, Conditions.In | Conditions.Not, new QConst(toKeysArr)) & deleteCondition; } Dalc.Delete(new Query(RelationSourceName, deleteCondition)); var data = ExtraKeys == null ? new Hashtable() : new Hashtable(new DictionaryWrapper <string, object>(ExtraKeys)); data[FromFieldName] = fromKey; int pos = 1; foreach (var toKey in toKeys) { data[ToFieldName] = toKey; if (PositionFieldName != null) { data[PositionFieldName] = pos++; } if (Contains(toKey, currentToKeys)) { if (PositionFieldName != null) { Dalc.Update(new Hashtable() { { PositionFieldName, data[PositionFieldName] } }, new Query(RelationSourceName, (QField)ToFieldName == new QConst(toKey) & fromCondition)); } } else { Dalc.Insert(data, RelationSourceName); } } }