Информация об изменениях

Сообщение Re[2]: ASP.NET MVC + EF6 - не обновляются данные в UI от 03.11.2016 11:42

Изменено 03.11.2016 11:43 kirillmager

Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, kirillmager, Вы писали:


K>>Привет всем!

K>>Проблема с ASP.NET MVC приложением — в UI показываются старые данные при обновлении их напрямую в SQL Server.
K>>Куда смотреть? Может быть в кэширование в EF6?
G>Контекст в статической переменной хранишь?
G>А вообще покажи код.

Копание в коде показывает, что дело, скороей всего, в NavigationProperty. Именно при обновлении их списка в SQL Server обновления в UI нет. Пытаюсь подгрузить их так:


Parent GetParent(int parentId){
    Parent parent = Holder.Get<Parent>().FindSingle(new Specification<Parent>(p => p.ParentId == parentId));
    Holder.ReloadNavigationProperty(parent, (p => p.Children));
    return parent
}


Код в классе Holder для ReloadNavigationProperty:
public void ReloadNavigationProperty<TEntity, TElement>(TEntity entity, Expression<Func<TEntity, ICollection<TElement>>> navigationProperty) where TEntity : class, IEntity where TElement : class, IEntity
        {
            ((DbContext)Context).ReloadNavigationProperty<TEntity, TElement>(entity, navigationProperty);
        }


Код для Extension-метода
[cs]
public static class ReloadMethods
{
public static void ReloadNavigationProperty<TEntity, TElement>(this DbContext context, TEntity entity, Expression<Func<TEntity, ICollection<TElement>>> navigationProperty) where TEntity : class where TElement : class, IEntity
{
context.Entry(entity).Collection<TElement>(navigationProperty).Load();
}
}
[cs]

При этом странность: при добавлении в SQL Server еще одной записи для NavigationProperty обновление в UI есть — показывается на 1 запись больше.
А вот если удалить в SQL Server записи для NavigationProperty, то в UI никакого обновления (по F5) — удаленная запись показывается.
Re[2]: ASP.NET MVC + EF6 - не обновляются данные в UI
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, kirillmager, Вы писали:


K>>Привет всем!

K>>Проблема с ASP.NET MVC приложением — в UI показываются старые данные при обновлении их напрямую в SQL Server.
K>>Куда смотреть? Может быть в кэширование в EF6?
G>Контекст в статической переменной хранишь?
G>А вообще покажи код.

Копание в коде показывает, что дело, скороей всего, в NavigationProperty. Именно при обновлении их списка в SQL Server обновления в UI нет. Пытаюсь подгрузить их так:


Parent GetParent(int parentId){
    Parent parent = Holder.Get<Parent>().FindSingle(new Specification<Parent>(p => p.ParentId == parentId));
    Holder.ReloadNavigationProperty(parent, (p => p.Children));
    return parent
}


Код в классе Holder для ReloadNavigationProperty:
public void ReloadNavigationProperty<TEntity, TElement>(TEntity entity, Expression<Func<TEntity, ICollection<TElement>>> navigationProperty) where TEntity : class, IEntity where TElement : class, IEntity
        {
            ((DbContext)Context).ReloadNavigationProperty<TEntity, TElement>(entity, navigationProperty);
        }


Код для Extension-метода
public static class ReloadMethods
    {
        public static void ReloadNavigationProperty<TEntity, TElement>(this DbContext context, TEntity entity, Expression<Func<TEntity, ICollection<TElement>>> navigationProperty) where TEntity : class where TElement : class, IEntity
        {
            context.Entry(entity).Collection<TElement>(navigationProperty).Load();
        }
    }


При этом странность: при добавлении в SQL Server еще одной записи для NavigationProperty обновление в UI есть — показывается на 1 запись больше.
А вот если удалить в SQL Server записи для NavigationProperty, то в UI никакого обновления (по F5) — удаленная запись показывается.