11
私はDbSet <TEntity> .LocalはEntity Framework 7に相当しますか?
DbSet<TEntity>.Local
が存在していないよう、EF7で
ObservableCollection<TEntity>
を必要とします。
回避策はありますか?
私はDbSet <TEntity> .LocalはEntity Framework 7に相当しますか?
DbSet<TEntity>.Local
が存在していないよう、EF7で
ObservableCollection<TEntity>
を必要とします。
回避策はありますか?
現在のバージョンの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;
}
}
注:追加のデータを照会すると、リストは更新されません。それは変更トラッカーに戻ってリストの変更を同期します。