无法使用 Entity Framework Core 3.1.3 更新数据库
Can not update database with Entity Framework Core 3.1.3
我将 EF Core 用于 ASP.Net 网络 API 应用程序,并尝试从我的模型(基本 Microsoft 文档示例)创建 PostgreSQL 数据库
我设法使用“Add-Migration”创建迁移,但下一步,当我执行“Update-Database”时我有这个错误:
> fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
> Failed executing DbCommand (15ms) [Parameters=[], CommandType='Text',
> CommandTimeout='30'] CREATE TABLE "Blogs" (
> "BlogId" integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
> "Url" text NULL,
> CONSTRAINT "PK_Blogs" PRIMARY KEY ("BlogId") );
> Npgsql.PostgresException (0x80004005): 42601: erreur de syntaxe sur ou près de « GENERATED »
好的。所以,问题是我想使用 PostgreSQL 9.4,但 EF Core 3 只支持 PostgreSQL 10 及更高版本。
解决方案是说您使用的是版本 9.4,并在上下文中添加了一个选项。
Startup.cs 上的示例:
services.AddDbContext<MyContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), o => o.SetPostgresVersion(9, 4)));
或在上下文文件中:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), o => o.SetPostgresVersion(9, 4)));
}
我将 EF Core 用于 ASP.Net 网络 API 应用程序,并尝试从我的模型(基本 Microsoft 文档示例)创建 PostgreSQL 数据库
我设法使用“Add-Migration”创建迁移,但下一步,当我执行“Update-Database”时我有这个错误:
> fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
> Failed executing DbCommand (15ms) [Parameters=[], CommandType='Text',
> CommandTimeout='30'] CREATE TABLE "Blogs" (
> "BlogId" integer NOT NULL GENERATED BY DEFAULT AS IDENTITY,
> "Url" text NULL,
> CONSTRAINT "PK_Blogs" PRIMARY KEY ("BlogId") );
> Npgsql.PostgresException (0x80004005): 42601: erreur de syntaxe sur ou près de « GENERATED »
好的。所以,问题是我想使用 PostgreSQL 9.4,但 EF Core 3 只支持 PostgreSQL 10 及更高版本。
解决方案是说您使用的是版本 9.4,并在上下文中添加了一个选项。
Startup.cs 上的示例:
services.AddDbContext<MyContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), o => o.SetPostgresVersion(9, 4)));
或在上下文文件中:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), o => o.SetPostgresVersion(9, 4)));
}