如何使用 Npgsql 设置 JSON 列?

How to set up JSON columns with Npgsql?

我正在设置一个迷你模型,但在执行来自 docs website 的代码时出现此异常。

这是我的代码:

  public class SomeEntity
  {
    public int Id { get; set; }
    [Column(TypeName = "jsonb")]
    public Customer Customer { get; set; }
  }

  public class Customer    // Mapped to a JSON column in the table
  {
    public string Name { get; set; }
    public int Age { get; set; }
    public Order[] Orders { get; set; }
  }

  public class Order       // Part of the JSON column
  {
    public decimal Price { get; set; }
    public string ShippingAddress { get; set; }
  }
using (var dbContext = services.GetRequiredService<AppDbContext>())
{
  await dbContext.Database.MigrateAsync();

  dbContext.SomeEntities.Add(
    new SomeEntity
    {
      Customer = new Customer
      {
        Name = "Roji",
        Age = 35,
        Orders = new[]
        {
          new Order { Price = 3, ShippingAddress = "Somewhere" },
          new Order { Price = 3, ShippingAddress = "Nowhere" }
        }
      }
    });

  await dbContext.SaveChangesAsync();
}

当我调用 SaveChanges 时,出现以下异常:

Npgsql.PostgresException: 42P01: relation \"SomeEntities\" does not exist

Here 的一个 repro 项目。

因为我相信我遵循了手册中的所有步骤,所以我也打开了一个问题 here

您正在调用 MigrateAsync 方法,但您的项目没有任何实际迁移(可以使用 dotnet ef migrations add <name> 创建)。如果你只是玩玩,你可能想调用 dbContext.Database.EnsureCreated,而不是 see this doc page.