Как я могу отделить сущность от графа данных, используя Entity Framework Core? - PullRequest
0 голосов
/ 19 сентября 2019

Допустим, у меня есть сущность Vehicle, которая ссылается на другую сущность от Type до TypeId.Я хочу обновить Vehicle с помощью Entity Framework, но не хочу обновлять TypeId (или Type).

Проблема заключается в том, что Entity Framework хочет обновить весь граф, и в результате свойства сущности Type перезаписываются пустыми значениями при обновлении Vehicle.

Полагаю, я мог бы извлечь сущность Type из источника данных перед обновлением, но, по-видимому, нет необходимости совершать два дополнительных вызова (чтение и сохранение) для базы данных, чтобы обновить сущность, которую не нужно обновлять.

Я бы предпочел отделить сущность Vehicle от графа и обновить только эту сущность.Как я могу это сделать?

Редактировать:

Вот некоторый код, чтобы прояснить вопрос:

public async Task Update(Vehicle entity)
{
    var dataEntity = mapper.Map<VehicleDataEntity>(entity);
    await repository.Update(entity.Id, dataEntity);
}

Как вы видите, объект данных создается во время отображения (с помощью Automappar).

Обновление выполняется в простом универсальном репозитории:

public async Task Update(Guid id, TEntity entity)
{
    dbContext.Set<TEntity>().Update(entity);
    await dbContext.SaveChangesAsync();
}

Вот модель данных:

public class VihecleDataEntity : IEntity
{
    [Key]
    public Guid Id { get; set; }
    public string Description { get; set; }
    public VihecleTypeEntity Type { get; set; }
}

public class VihecleTypeEntity: IEntity
{
    [Key]
    public Guid Id { get; set; }
    public string Description { get; set; }
}

1 Ответ

0 голосов
/ 20 сентября 2019

Если вы хотите обновить только VehicleDataEntity свойства, вы можете установить VehicleDataEntity.Type свойство в null.Это не удалит отношение, но помешает EF обновить свойства связанного объекта.

...