Включить & Entity Framework 6 создание дубликатов записей - PullRequest
0 голосов
/ 25 октября 2018

В настоящее время я использую ядро ​​ASP.net вместе с EF6.Однако, когда я пытаюсь включить связанные данные (я отключил ленивую загрузку).А затем сделайте сохранение изменений, оно дублирует мои данные.

В настоящее время я использую .AsNoTracking (), но это не влияет, когда есть дети, есть идеи о том, как это будет работать?

Вот некоторая конфигурация для моего контекста:

        this.context.Configuration.LazyLoadingEnabled = false;
        this.context.Configuration.AutoDetectChangesEnabled = true;
        this.context.Database.CommandTimeout = 180;

Я создаю IQueryable, а затем отправляю его, чтобы затем добавить .AsNoTracking следующим образом (я использую замечательный общий репо Криса Пратта: https://cpratt.co/truly-generic-repository/)

    protected virtual IQueryable<TEntity> GetQueryable<TEntity>(
        Expression<Func<TEntity, bool>> filter = null,
        Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
        string includeProperties = null,
        int? skip = null,
        int? take = null)
        where TEntity : class, IEntity
    {
        includeProperties = includeProperties ?? string.Empty;
        IQueryable<TEntity> query = context.Set<TEntity>();

        if (filter != null)
        {
            query = query.Where(filter);
        }

        foreach (var includeProperty in includeProperties.Split
            (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
        {
            query = query.Include(includeProperty);
        }

        if (orderBy != null)
        {
            query = orderBy(query);
        }

        if (skip.HasValue)
        {
            query = query.Skip(skip.Value);
        }

        if (take.HasValue)
        {
            query = query.Take(take.Value);
        }

        return query.AsNoTracking();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...