table 在 App Service stg env 中重命名后,EF 核心对象名称无效

EF core Invalid object name after table rename in App Service stg env

我在本地 运行 我的应用程序,在 dev env 和 prd env 中都没有问题,但在 stg env 中我得到这个“无效的对象名称'bls.TaskFeedReactions”异常..

我将table从“TaskFeedReactions”重命名为“FeedReactions”,迁移删除了table“TaskFeedReactions”并创建了新的“FeedReactions”,在每个环境数据库(dev(本地主机也使用)、stg 和 prd)我有 table“FeedReactions”,也在 DbContext 中我有这个:

        EntityTypeBuilder<FeedReactionModel> feedReactions = modelBuilder.Entity<FeedReactionModel>();

        feedReactions.ToTable("FeedReactions", BLSchema);
                            .
                            .

为什么 stg 环境创建了一个使用旧名称“TaskFeedReactions”的查询,我该如何解决它?

最佳

EF Core 以某种方式在此环境中缓存了查询,重启或重新部署应用程序不会清除缓存的查询并重新创建更新了 table 名称的新查询。

所以为了解决这个问题,我评论了访问重命名的 table:

的查询部分
        return await context.TaskFeedMessages
            .Where(x => x.TaskId == taskId)
            .Select(x => new TaskFeedModel
            {
                Id = x.Id,
                CreatorId = x.CreatorId,
                TaskId = x.TaskId,
                MessageType = x.MessageType,
                Text = x.Text,
                Status = x.Status,
                IsImportant = x.IsImportant,
                //ReactionsDict = new Dictionary<string, HashSet<string>>(
                //    x.Reactions.GroupBy(Y => Y.Reaction)
                //    .Select(y => new KeyValuePair<string, HashSet<string>>(
                //            y.Key, y.Select(z => z.UserId).ToHashSet()))),
                CreatedAt = x.CreatedAt
            })
            .OrderByDescending(x => x.CreatedAt)
            .Skip(skip)
            .Take(take)
            .ToListAsync();
    

在stg env中重新部署,然后去掉注释重新部署。

它解决了我的问题。