我需要一个

ObservableCollection<TEntity>

在EF7中,
DbSet<TEntity>.Local

似乎不存在;

有什么解决方法吗?

最佳答案

当前版本的EntityFramework(RC1-final)没有DbSet.Local功能。但!您可以使用当前的扩展方法实现类似的功能:

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;
    }
}

注意:如果您查询更多数据,它将不会刷新列表。但是它将把对列表的更改同步回更改跟踪器。

关于c# - Entity Framework 7中是否有DbSet <TEntity> .Local等效项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33819159/

10-12 22:22