private static void ApplyChanges <TEntity>(TEntity root) where TEntity : class, IObjectWithState { using (var context = new BreakAwayContext()) { context.Set <TEntity>().Add(root); CheckForEntitiesWithoutStateInterface(context); foreach (var entry in context.ChangeTracker .Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; if (stateInfo.State == State.Modified) { entry.State = EntityState.Unchanged; foreach (var property in stateInfo.ModifiedProperties) { entry.Property(property).IsModified = true; } } else { entry.State = ConverterState(stateInfo.State); } entry.State = ConverterState(stateInfo.State); } context.SaveChanges(); } }
private static void HandlePartialUpdate(DbContext context, IObjectWithState objectWithState, EntityEntry <IObjectWithState> entry) { var objectWithPartialUpdate = objectWithState as IObjectWithPartialUpdate; if (objectWithPartialUpdate == null) { throw new InvalidOperationException(string.Format("Entity {0} must inheritance from" + " IObjectWithPartialUpdate", objectWithState.GetType())); } // context.Configuration.ValidateOnSaveEnabled = false; entry.State = EntityState.Unchanged; //foreach (var property in objectWithPartialUpdate.ModifiedProperties) //{ // var errors = entry.Property(property).GetValidationErrors(); // if (errors.Count == 0) // { // entry.Property(property).IsModified = true; // } // else // { // throw new DbEntityValidationException(string.Format("{0} has some errors.", property), // new[] { new DbEntityValidationResult(entry, errors) }); // } //} }
public static void ApplyStateChanges(this DbContext context) { foreach (var entry in context.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = ConvertState(stateInfo.ObjectState); } }
private void ApplyStateChanges(U entityContext, T entity) { foreach (var entry in entityContext.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = ConvertState(stateInfo.State); } }
public static void ResetStateChanges(this DbContext context) { foreach (var entry in context.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; stateInfo.ResetState(); } }
public void FixState() { foreach (var entry in ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = DataUtilities.ConvertState(stateInfo.State); } }
public void Save_ValidViewModelWithObjectStateEdited_ARecipeWasEditedInDatabase() { //Arrange var user = _context.Users.First(); _recipesControllers.MockControllerContext(user.Id, user.UserName); var foodType = new FoodType(); foodType = _context.FoodTypes.FirstOrDefault(); _food = _context.Foods.FirstOrDefault(f => f.FoodTypeId == foodType.Id); _ingredientType = _context.IngredientTypes.FirstOrDefault(); _ingredient = _context.Ingredients.FirstOrDefault(i => i.IngredientTypeId == _ingredientType.Id); _unitOfMeasure = _context.UnitOfMeasures.FirstOrDefault(); var recipe = AddNewRecipe(foodType, _food, _unitOfMeasure, _ingredientType, _ingredient, user); _context.Recipes.Add(recipe); _context.SaveChanges(); //Action var recipeFormViewModel = CreateRecipeFormViewModelWithRecipe(recipe, ObjectState.Unchanged, ObjectState.Unchanged); recipeFormViewModel.Title = "Test Recipe 2"; recipeFormViewModel.ObjectState = ObjectState.Modified; recipeFormViewModel.RecipeIngredients[0].Amount = 2; recipeFormViewModel.RecipeIngredients[0].ObjectState = ObjectState.Modified; foreach (var entry in _context.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = EntityState.Detached; } _recipesControllers.Save(recipeFormViewModel); recipe = _context.Recipes.FirstOrDefault(r => r.Title == "Test Recipe 2"); var recipe2 = _context.Recipes.FirstOrDefault(r => r.Title == "Test Recipe"); //Assertions Assert.IsNotNull(recipe); recipe.RecipeIngredients.Should().HaveCount(1); recipe2.Should().BeNull(); }
public static void SaveCustomerTypeGraph(CustomerType customerType) { using (var context = new Model1ContainerContainer()) { context.CustomerTypes.Add(customerType); foreach (var entry in context.ChangeTracker .Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = ConvertState(stateInfo.State); } context.SaveChanges(); } }
public static void SaveDestinationGraph(Destination destination) { using (var context = new BreakAwayContext()) { context.Destinations.Add(destination); foreach (var entry in context.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = ConverterState(stateInfo.State); } context.SaveChanges(); } }
// Was a static method: This is a base class so we do not want to use // a static method here. // Question: Make ApplyChanges happen automatically by // implementing INotifyPropertyChanges public void ApplyChanges <TEntity>(TEntity root) where TEntity : class, IObjectWithState { using (var context = new BaseContext <TContext>()) { context.Set <TEntity>().Add(root); CheckForEntitiesWithoutStateInterface(context); foreach (var entry in context.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = ConvertState(stateInfo.State); } context.SaveChanges(); } }
public static void ApplyChanges <TEntity>(TEntity root) where TEntity : class, IObjectWithState { using (var context = new AndaroDbContext()) { context.Set <TEntity>().Add(root); CheckForEntititesWithoutStateInterface(context); foreach (var entry in context.ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = StateHelpers.ConvertState(stateInfo.State); if (stateInfo.State == State.Unchanged) { var databaseValues = entry.GetDatabaseValues(); entry.OriginalValues.SetValues(databaseValues); } } } }
private static void ApplyChanges <TEntity>(TEntity root) where TEntity : class, IObjectWithState { using (var context = new Model1ContainerContainer()) { context.Set <TEntity>().Add(root); // cazul cand o clasa din model nu implementeaza // interfata IObjectWithState CheckForEntitiesWithoutStateInterface(context); foreach (var entry in context.ChangeTracker .Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; entry.State = ConvertState(stateInfo.State); } context.SaveChanges(); } }
/// <summary> /// Aplicación de cambios en la fuente de datos. /// </summary> /// <typeparam name="TEntity"></typeparam> /// <param name="root"></param> /// <returns></returns> public async Task <int> ApplyChanges <TEntity>(TEntity root) where TEntity : class, IObjectWithState { Set <TEntity>().Add(root); CheckForEntitiesWithoutStateInterface(this); foreach (var entry in ChangeTracker.Entries <IObjectWithState>()) { IObjectWithState stateInfo = entry.Entity; if (stateInfo.State == ModelState.Modified) { entry.State = EntityState.Unchanged; foreach (var property in stateInfo.ModifiedProperties) { entry.Property(property).IsModified = true; } } else { entry.State = ConvertState(stateInfo.State); } } return(await SaveChangesAsync()); }
public static void ConvertStateOfNode(EntityEntryGraphNode node) { IObjectWithState entity = (IObjectWithState)node.Entry.Entity; node.Entry.State = ConvertToEFState(entity.State); }