/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual InternalEntityEntry PrepareToSave() { if (EntityState == EntityState.Added) { foreach (var property in EntityType.GetProperties()) { if (property.IsReadOnlyBeforeSave && !HasTemporaryValue(property) && !HasDefaultValue(property)) { throw new InvalidOperationException(CoreStrings.PropertyReadOnlyBeforeSave(property.Name, EntityType.DisplayName())); } } } else if (EntityState == EntityState.Modified) { foreach (var property in EntityType.GetProperties()) { if (property.IsReadOnlyAfterSave && IsModified(property)) { throw new InvalidOperationException(CoreStrings.PropertyReadOnlyAfterSave(property.Name, EntityType.DisplayName())); } } } if (EntityType.StoreGeneratedCount() > 0) { DiscardStoreGeneratedValues(); _storeGeneratedValues = new StoreGeneratedValues(this); } return(this); }
public virtual InternalEntityEntry PrepareToSave() { if (EntityState == EntityState.Added) { var setProperty = EntityType.GetProperties().FirstOrDefault(p => p.IsReadOnlyBeforeSave && !IsTemporaryOrDefault(p)); if (setProperty != null) { throw new InvalidOperationException(CoreStrings.PropertyReadOnlyBeforeSave(setProperty.Name, EntityType.DisplayName())); } } else if (EntityState == EntityState.Modified) { var modifiedProperty = EntityType.GetProperties().FirstOrDefault(p => p.IsReadOnlyAfterSave && IsModified(p)); if (modifiedProperty != null) { throw new InvalidOperationException(CoreStrings.PropertyReadOnlyAfterSave(modifiedProperty.Name, EntityType.DisplayName())); } } if (EntityType.StoreGeneratedCount() > 0) { _storeGeneratedValues = new StoreGeneratedValues(this); } return(this); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual void DiscardStoreGeneratedValues() { if (!_storeGeneratedValues.IsEmpty) { var storeGeneratedValues = _storeGeneratedValues; _storeGeneratedValues = new StoreGeneratedValues(); foreach (var property in EntityType.GetProperties()) { object value; if (storeGeneratedValues.TryGetValue(property, out value)) { StateManager.Notify.PropertyChanged(this, property, setModified: false); } } } }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual void DiscardStoreGeneratedValues() { if (!_storeGeneratedValues.IsEmpty) { var storeGeneratedValues = _storeGeneratedValues; _storeGeneratedValues = new StoreGeneratedValues(); foreach (var property in EntityType.GetProperties()) { if (storeGeneratedValues.TryGetValue(property, out var value)) { var isTemp = HasTemporaryValue(property); StateManager.InternalEntityEntryNotifier.PropertyChanged(this, property, setModified: false); if (isTemp) { MarkAsTemporary(property); } } } } }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual void AcceptChanges() { if (!_storeGeneratedValues.IsEmpty) { var storeGeneratedValues = _storeGeneratedValues; _storeGeneratedValues = new StoreGeneratedValues(); foreach (var property in EntityType.GetProperties()) { object value; if (storeGeneratedValues.TryGetValue(property, out value)) { this[property] = value; } } } var currentState = EntityState; if ((currentState == EntityState.Unchanged) || (currentState == EntityState.Detached)) { return; } if ((currentState == EntityState.Added) || (currentState == EntityState.Modified)) { _originalValues.AcceptChanges(this); SetEntityState(EntityState.Unchanged, true); } else if (currentState == EntityState.Deleted) { SetEntityState(EntityState.Detached); } }
public virtual void DiscardStoreGeneratedValues() => _storeGeneratedValues = new StoreGeneratedValues();