【发布时间】:2015-11-20 04:46:00
【问题描述】:
我需要一个
ObservableCollection<TEntity>
在 EF7 中,
DbSet<TEntity>.Local
似乎不存在;
有什么解决办法吗?
【问题讨论】:
标签: c# entity-framework entity-framework-core
我需要一个
ObservableCollection<TEntity>
在 EF7 中,
DbSet<TEntity>.Local
似乎不存在;
有什么解决办法吗?
【问题讨论】:
标签: c# entity-framework entity-framework-core
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;
}
}
注意:如果您查询更多数据,它不会刷新列表。不过,它会将列表的更改同步回更改跟踪器。
【讨论】: