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; }
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))); }
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(); }
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); }
public virtual T Get(T lookup) { return(Get(_memberResolver.GetKeyPropertyValues(lookup).ToArray())); }