如何使用 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.
我正在设置一个迷你模型,但在执行来自 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.