【问题标题】:Entity Framework: adding an entity to Microsoft.EntityFrameworkCore.DbContext as DbSet in an Azure functions app实体框架:将实体作为 Azure 函数应用中的 DbSet 添加到 Microsoft.EntityFrameworkCore.DbContext
【发布时间】:2021-12-30 03:29:27
【问题描述】:

刚开始使用 Azure Functions 和 EF。

我有以下代码:

MyDbContext.cs

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
    {
    }

    public DbSet<Badge> Badge { get; set; }
    public DbSet<User> User { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.ApplyConfiguration(new BadgeDataConfiguration());
        modelBuilder.ApplyConfiguration(new UserDataConfiguration());
    }
}

BadgeDataConfiguration.cs

public class BadgeDataConfiguration : IEntityTypeConfiguration<Badge>
{
    public void Configure(EntityTypeBuilder<Badge> builder)
    {
        builder.Property(x => x.id)
        .ValueGeneratedOnAdd();

        builder.Property(x => x.userid)
            .HasColumnName("userid")
            .IsRequired();

        builder.Property(x => x.description)
            .HasColumnName("description")
            .IsRequired();

        builder.Property(x => x.category)
            .HasColumnName("category")
            .IsRequired();

        builder.Property(x => x.picture)
            .HasColumnName("picture")
            .IsRequired();
    }
}

UserDataConfiguration.cs

public class UserDataConfiguration : IEntityTypeConfiguration<User>
{
    public void Configure(EntityTypeBuilder<User> builder)
    {
        builder.Property(x => x.id)
        .ValueGeneratedOnAdd();

        builder.Property(x => x.username)
            .HasColumnName("userid")
            .IsRequired();

        builder.Property(x => x.firstname)
            .HasColumnName("description")
            .IsRequired();

        builder.Property(x => x.lastname)
            .HasColumnName("category")
            .IsRequired();

        builder.Property(x => x.password_hash)
            .HasColumnName("picture")
            .IsRequired();

        builder.Property(x => x.email)
            .HasColumnName("category")
            .IsRequired();

        builder.Property(x => x.picture)
            .HasColumnName("category")
            .IsRequired();

        builder.Property(x => x.date_created)
            .HasColumnName("category")
            .IsRequired();
    }
}

我最初创建了 Badge 实体,并让一切都在 Azure 函数中运行。

例如:

dbContext.Badge.ToList();

但是,一旦我为用户实体添加了所有代码,在执行 dbContext.User.ToList(); 时总是会出现以下异常

System.Private.CoreLib:执行函数时出现异常:GetUser。核心 Microsoft SqlClient 数据提供程序:无效的对象名称“用户”

Badge 实体仍然正常运行。

我在这里错过了什么?

版本:

  • .NET 6.0
  • Azure 函数 v4
  • 实体框架核心 v6.0.0

【问题讨论】:

  • 您是否创建了User 表?这是一个 SQL Server 错误,抱怨没有具有该名称的表
  • 我用名称“users”而不是“user”创建了表。更改为表“用户”使其正常工作。感谢您的提示!

标签: azure entity-framework-core azure-functions dbcontext


【解决方案1】:

数据库表命名错误。 将其从“用户”更改为“用户”,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多