Entity Framework Core EntityEntry.Reload () с DbSet <type>не работает - PullRequest
0 голосов
/ 24 января 2020

Приведенный ниже код не работает в 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, так как это инъекция зависимости, и я не могу разбить на части прицел легко без серьезного рефакторинга, что не имеет смысла.

Спасибо,

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