거기에 DbSet 있나요 <TEntity> .Local Entity Framework 7에서 이에 상응 하는가?

c# entity-framework entity-framework-core

문제

나는 필요하다.

ObservableCollection<TEntity>

EF7에서,

ObservableCollection<TEntity>

존재하지 않는 것 같습니다.

해결 방법이 있습니까?

수락 된 답변

현재 버전의 EntityFramework (RC1- 최종)에는 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;
    }
}

참고 : 더 많은 데이터를 쿼리하면 목록을 새로 고치지 않습니다. 변경 내용을 변경 추적자로 다시 동기화합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.