Как указать обновление объекта, но НЕ его отношений/навигации, когда объект извлекается с помощью AsNoTracking в EF CoreC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как указать обновление объекта, но НЕ его отношений/навигации, когда объект извлекается с помощью AsNoTracking в EF Core

Сообщение Anonymous »

У меня есть эти таблицы:

Код: Выделить всё

public class Order
{
public long Id { get; set; }
public long CustomerId { get; set; }
// ...
public virtual Customer Customer { get; set; }
}

public class Customer
{
public long Id { get; set; }
public long Name{ get; set; }
// ...
public virtual Wallet Wallet { get; set; }
}

public class Wallet
{
public long Id { get; set; }
public long CustomerId { get; set; }
// ...
}
Я получаю все объекты с помощью .AsNoTracking(), и всякий раз, когда я хочу их обновить, я просто вызываю функцию Update и приказываю системе отслеживания изменений отслеживать их снова.

Код: Выделить всё

var order = await DbContext.Orders.AsNoTracking().FirstOrDefaultAsync(x => x.Id == 5);
...
order.Quantity = 15;
await DbContext.Orders.Update(order);
await SaveChanges();
Сначала в трекере изменений ничего не было, но после того, как я вызвал await DbContext.Orders.Update(order) и попросил обновить только порядок, там будет три объекта в системе отслеживания изменений: заказ, клиент и кошелек.
Мой вопрос: как предотвратить отслеживание отношений при вызове функции обновления?
Я использовал .AsNoTrackingWithIdentityResolution() вместо .AsNoTracking(), но ничего не изменилось.
Я знаю, что могу использовать

Код: Выделить всё

UnitOfWork.DbContext.Entry(order).State = EntityState.Modified;
чтобы указать только порядок отслеживания, или я могу отделить дополнительный объект, который я предпочитаю не отслеживать.

Код: Выделить всё

UnitOfWork.DbContext.Entry(customer).State = EntityState.Detached;
UnitOfWork.DbContext.Entry(wallet).State = EntityState.Detached;
Однако изменение средства отслеживания изменений, с моей точки зрения, не является идеальным решением.
Есть ли у кого-нибудь идеи, как решить эту проблему случайно? ?

Подробнее здесь: https://stackoverflow.com/questions/784 ... s-when-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Предварительная лифта ссылки не работает должным образом, сценарий снова извлекается на навигации
    Anonymous » » в форуме Html
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Предварительная лифта ссылки не работает должным образом, сценарий снова извлекается на навигации
    Anonymous » » в форуме Html
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Какую разницу имеет .AsNoTracking()?
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Entity Framework AsNoTracking() вместе с IDbContextScopeFactory.CreateReadOnly()
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Entity Framework AsNoTracking() вместе с IDbContextScopeFactory.CreateReadOnly()
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»