¿Hay un DbSet <TEntity> ¿Equivalente local en Entity Framework 7?

c# entity-framework entity-framework-core

Pregunta

necesito un

ObservableCollection<TEntity>

en EF7,

ObservableCollection<TEntity>

no parece existir

¿Hay algún trabajo alrededor?

Respuesta aceptada

La versión actual de EntityFramework (RC1-final) no tiene una función DbSet.Local. ¡Pero! Puedes lograr algo similar con el método de extensión actual:

public static class Extensions
{
    public static ObservableCollection<TEntity> GetLocal<TEntity>(this DbSet<TEntity> set)
        where TEntity : class
    {
        var context = set.GetService<DbContext>();
        var data = context.ChangeTracker.Entries<TEntity>().Select(e => e.Entity);
        var collection = new ObservableCollection<TEntity>(data);

        collection.CollectionChanged += (s, e) =>
        {
            if (e.NewItems != null)
            {
                context.AddRange(e.NewItems.Cast<TEntity>());
            }

            if (e.OldItems != null)
            {
                context.RemoveRange(e.OldItems.Cast<TEntity>());
            }
        };

        return collection;
    }
}

Nota: no actualizará la lista si consulta más datos. Sin embargo, sincronizará los cambios a la lista en el rastreador de cambios.




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué