c# - 对象名称 dbo 表名无效 - Entity Framework 适用于 IIS,但不适用于 Azure 应用服务

标签 c# .net database entity-framework azure-web-app-service

当我尝试使用以下代码从表中检索数据时,我遇到了 Entity Framework 问题:

var firstPerson _deskAssignmentContextBackup.People.First();

我收到的错误消息是:“对象名称‘dbo.People’无效”。

奇怪的是,只有当应用程序作为应用服务部署到 Azure 时,才会出现此错误。当我将完全相同的代码部署到本地 IIS 时,一切都工作得很好。这让我相信问题不在于数据库或 DbContext 配置。

用于此操作的上下文是使用数据库优先方法创建的,确保连接和数据库结构在环境之间完美匹配。

我怀疑可能存在潜在的配置差异或特定于环境的因素导致此行为。

下面是 DbContext 的代码片段:

public class DeskAssignmentContextBackup : DbContext
{
    public DeskAssignmentContextBackup()
    {
    }

    public DeskAssignmentContextBackup(DbContextOptions<DeskAssignmentContextBackup> options)
      : base(options)
    {
    }

    public virtual DbSet<Person> People { get; set; } = null!;

    public virtual DbSet<Supervisor> Supervisors { get; set; } = null!;


    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
      modelBuilder.Entity<Person>(entity =>
      {
        entity.HasKey(e => e.Id).HasName("PK_dbo.People");
        entity.HasIndex(e => e.Id, "IX_Id");
        entity.HasIndex(e => e.SupervisorId, "IX_Supervisor_Id");

        entity.Property(e => e.EndDate).HasColumnType("datetime");
        entity.Property(e => e.SupervisorId).HasColumnName("Supervisor_Id");

        entity.HasOne(d => d.Supervisor).WithMany(p => p.People)
          .HasForeignKey(d => d.SupervisorId)
          .HasConstraintName("FK_dbo.People_dbo.Supervisors_Supervisor_Id");
      });

      modelBuilder.Entity<Supervisor>(entity =>
      {
        entity.HasKey(e => e.Id).HasName("PK_dbo.Supervisors");
        entity.HasIndex(e => e.Id, "IX_Id");
      });
    }
  }

任何关于如何进一步排查和解决此问题的见解或指导将不胜感激。预先感谢您的帮助!

最佳答案

此错误显然是由于无法找到 dbo.People 表造成的。

如果我理解正确,您正在两个不同的环境中运行数据库查询。第一个是本地的,第二个是 Azure。

因此,如果表 dbo.People 确实存在(请仔细检查),我建议您检查用户是否具有适当的运行查询的权限.

另外,请检查架构和名称,也许有 dbo.Peoplespublic.People.

关于c# - 对象名称 dbo 表名无效 - Entity Framework 适用于 IIS,但不适用于 Azure 应用服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76869177/

相关文章:

c# - 如何确定 GC.AddMemoryPressure() 的适当参数?

database - Spring Batch Framework - 自动创建批处理表

c# - 如何在 Microsoft Graph 中使用 DI

c# - 用源代码替换对 Json.NET 的引用时无法编译项目

c# Form.Hide() 与 Form.Opacity = 0

c# 可枚举类 - 与 VBA 兼容

mongodb - 为什么MongoDB会占用这么多空间?

PHP变量初始化到数据库查询

应用了不同操作集的 C# 类

c# - 窗体 : Multiple Threads Updating UI at Same Time