public override void Add <TEntity>(TEntity entity) { Guard.NotNull(entity, nameof(entity)); ModelConventionHelper.Validate <TEntity>(entity); var entityType = typeof(TEntity); var keyValues = Conventions.GetPrimaryKeyValues(entity); if (_db.TryFind <TEntity>(keyValues, out object _)) { throw new InvalidOperationException( string.Format( CultureInfo.CurrentCulture, Resources.EntityAlreadyBeingTrackedInStore, entityType)); } if (TryGeneratePrimaryKey <TEntity>(entity, out var newKey)) { // assumes we only have a single key since // we cannot generated for a composite key anyways keyValues[0] = newKey; } _db.AddOrUpdate <TEntity>(entity, keyValues); }
public override void Remove <TEntity>(TEntity entity) { Guard.NotNull(entity, nameof(entity)); ModelConventionHelper.Validate <TEntity>(entity); var keyValues = Conventions.GetPrimaryKeyValues(entity); if (!_db.TryFind <TEntity>(keyValues, out object _)) { throw new InvalidOperationException(Resources.EntityNotFoundInStore); } _db.Remove <TEntity>(keyValues); }