/// <summary> /// Helper provisorio para realizar um update no entity sem precisar de ir ao banco de dados. /// </summary> /// <param name="context">Contexto do Entity.</param> /// <param name="entitySetName">Nome do EntitySet.</param> /// <param name="entity">Entity Object.</param> public static void Update(this ObjectContext context, string entitySetName, EntityObject entity) { if (entity.EntityKey == null) entity.EntityKey = context.CreateEntityKey(entitySetName, entity); if (entity.EntityState == EntityState.Detached) context.Attach(entity); var stateEntry = context.ObjectStateManager.GetObjectStateEntry(entity.EntityKey); var propertyNameList = stateEntry.CurrentValues.DataRecordInfo.FieldMetadata.Select(pn => pn.FieldType.Name); foreach (var propName in propertyNameList) { stateEntry.SetModifiedProperty(propName); } //var relatedEntities = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added).Where( }
/// <summary> /// Helper provisorio para realizar um update no entity que possuir relacionamentos. /// </summary> /// <param name="context">Contexto do Entity.</param> /// <param name="entitySetName">Nome do EntitySet.</param> /// <param name="entity">Entity Object.</param> public static void UpdateWithReference(this ObjectContext context, string entitySetName, EntityObject entity) { if (entity.EntityKey == null) entity.EntityKey = context.CreateEntityKey(context.DefaultContainerName + "." + entitySetName, entity); if (entity.EntityState == EntityState.Detached) { object currentEntityInDb; if (context.TryGetObjectByKey(entity.EntityKey, out currentEntityInDb)) { context.ApplyPropertyChanges(entity.EntityKey.EntitySetName, entity); context.ApplyReferencePropertyChanges(entity, (IEntityWithRelationships)currentEntityInDb); //extension } else { throw new ObjectNotFoundException(); } } }
public static void SetEntityKey(this ObjectContext context, EntityObject entity) { entity.EntityKey = context.CreateEntityKey(EntityHelper.GetEntitySetName(entity.GetType(), context), entity); }