public void Save(object entity) { // is it a new object? if (!_identityMap.HasEntity(entity)) { // already beging saved? if (_saved.Contains(entity)) { return; } // then assign it an identifier var accessor = _store.GetIdAccessor(entity.GetType(), "Id"); if (accessor != null) { var id = accessor.Get(entity); // do we need to track the entity if (id > 0) { _identityMap.Add(id, entity); _updated.Add(entity); return; } else { // it's a new entity var collection = CollectionHelper.Current.GetSafeName(); id = _store.GetNextId(collection); accessor.Set(entity, id); } } _saved.Add(entity); } else { // update it _updated.Add(entity); } }