Приведенный ниже код не работает в Entity Framework Core:
_companyDbContext.Entry((DbSet<OrderRow>)_dbContext.OrderRows).Reload();
Это ошибка, которую я получаю:
InvalidOperationException: тип сущности 'InternalDbSet' не найден , Убедитесь, что тип сущности был добавлен в модель
Как получить EntityEntry
для DbSet
, чтобы я мог перезагрузить его, не ища вместо него InternalDbSet
(или что бы он ни делал).
Свойство dbContext:
public virtual DbSet<OrderRow> OrderRows { get; set; }
А у разработчика модели есть:
modelBuilder.Entity<OrderRow>(entity =>
{
entity.HasKey(e => new { e.OrderId, e.RowNo });
entity.HasIndex(e => e.CustomerOrderNo);
entity.HasIndex(e => e.ItemNo);
entity.HasOne(d => d.Item)
.WithMany(p => p.OrderRow)
.HasForeignKey(d => d.ItemNo)
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("FK_OrderRow_Item");
entity.HasOne(d => d.OrderHead)
.WithMany(p => p.OrderRows)
.HasForeignKey(d => d.OrderId)
.HasConstraintName("FK_OrderRow_OrderHead");
});
Некоторый контекст:
Мне нужно для перезагрузки части контекста, поскольку в моей области есть хранимая процедура, которая манипулирует базой данных (таблица OrderRows) и которая не отслеживается dbContext.
Поэтому, прежде чем я добавлю новые записи (с той же самой ключи, которые хранимая процедура ранее удалила) Мне нужно обновить sh отслеживание этой спецификации c DbSet.
Я не могу воссоздать весь dbContext, так как это инъекция зависимости, и я не могу разбить на части прицел легко без серьезного рефакторинга, что не имеет смысла.
Спасибо,