Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        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);
                }
            }
        }