11
我需要一個是否有DbSet <TEntity>。本地等價於Entity Framework 7?
ObservableCollection<TEntity>
在EF7
,
DbSet<TEntity>.Local
似乎並不存在;
有什麼解決方法嗎?
我需要一個是否有DbSet <TEntity>。本地等價於Entity Framework 7?
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;
}
}
注意:如果您查詢更多數據,它將不會刷新列表。它將同步列表中的更改回到更改跟蹤器。