es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de configurar un Delta para cambiar la propiedad UpdatableProperties en OData?

Estoy utilizando la implementación OData para agregar un servicio que realice operaciones CRUD, las clases que estoy utilizando tienen algunos campos que no deben actualizarse, así que estoy llamando a una función que utiliza una Lista para filtrar las propiedades:

private List<string> ReservedPropertiesName = new List<string>() { "ObjectId", "IsDeleted", "DeleterUserId", "DeletionTime", "LastModificationTime", "LastModifierUserId", "CreationTime", "CreatorUserId", "CreatorUser", "TenantId" };

public TEntity FilterUpdatableProperties(TEntity entity)
{
    Delta<TEntity> delta = new Delta<TEntity>(entity.GetType());
    ReservedPropertiesName.ForEach(p => delta.UpdatableProperties.Remove(p));
    SetDeltaEntityValues(ref delta, entity);

    return delta.GetInstance();
}

public void SetDeltaEntityValues(ref Delta<TEntity> delta,TEntity entity)
{    
    foreach (PropertyInfo propertyInfo in entity.GetType().GetProperties())
    {
        delta.TrySetPropertyValue(propertyInfo.Name, entity.GetValueByName(propertyInfo.Name));
    }
}

Quiero configurar Delta para eliminar algunas de las propiedades actualizables antes de que se llame al método Patch.

Tags:  

Answer

  1. Avatar for davy.ai

    Para eliminar algunas de las propiedades actualizables antes de que se llame al método Patch utilizando Delta, se puede utilizar el método FilterUpdatableProperties. Este método toma una entidad como entrada y crea un objeto Delta, que luego se puede utilizar para modificar la entidad.

    La lista ReservedPropertiesName contiene las propiedades que no deben actualizarse. El bucle ForEach itera sobre cada propiedad en la lista y la elimina del objeto UpdatableProperties de Delta.

    Se llama al método SetDeltaEntityValues para establecer los valores de la entidad en el objeto Delta. Este método itera sobre cada propiedad en el tipo de entidad y establece el valor de la propiedad en el objeto Delta utilizando TrySetPropertyValue.

    Luego, se devuelve el objeto Delta con un conjunto filtrado de propiedades actualizables. Esto se puede utilizar con el método Patch para actualizar la entidad sin modificar las propiedades reservadas.

Comments are closed.