В настоящее время я использую ядро 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();
}