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中重新部署,然后去掉注释重新部署。
它解决了我的问题。
我在本地 运行 我的应用程序,在 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中重新部署,然后去掉注释重新部署。
它解决了我的问题。