Example #1
0
        public void Add(T item, out T result)
        {
            var keys = _memberResolver.GetKeyPropertyValues(item);
            var key  = string.Join(KeyJoinDelimeter, keys.Select(x => x.ToString()));

            _dictionary.Add(key, item);
            result = item;
        }
Example #2
0
        public virtual T Get(T lookup)
        {
            var keyprops = _memberResolver.KeyPropertyMembers;

            if (!keyprops.Any())
            {
                throw new InvalidOperationException("Type does not have key columns: " + typeof(T).FullName);
            }
            return(Get(_memberResolver.GetKeyPropertyValues(lookup)));
        }
Example #3
0
        public void DeleteItem(T item)
        {
            var query  = CreateQueryByKey(_memberResolver.GetKeyPropertyValues(item).ToArray());
            var result = _collection.Remove(query);

            if (result.DocumentsAffected == 0)
            {
                throw new KeyNotFoundException("Could not find item to delete.");
            }
            AutoSaveIfAutoSaveEnabled();
        }
Example #4
0
        public virtual T UpdatePartial(object changes)
        {
            if (!_memberResolver.KeyPropertyMembers.Any())
            {
                throw new InvalidOperationException("The type does not have a KeyAttribute: " +
                                                    changes.GetType().FullName);
            }
            var key = _memberResolver.GetKeyPropertyValues(changes).Single().ToString();

            if (string.IsNullOrEmpty(key))
            {
                throw new MissingPrimaryKeyException("Invalid key in " + changes.GetType().FullName);
            }
            IDocumentSession session = GetSession();
            var target = session.Load <T>(key);

            _memberResolver.ApplyPartial(target, changes);
            session.Store(target);
            if (AutoSave)
            {
                SaveChanges();
            }
            return(target);
        }
Example #5
0
 public virtual T Get(T lookup)
 {
     return(Get(_memberResolver.GetKeyPropertyValues(lookup).ToArray()));
 }