.NET Core - 迁移流畅 API HasColumnType

.NET Core - Migration Fluent API HasColumnType

我正在为 SQLSERVER 和 PostgreSQL.

使用 .NET CORE 2.2 和 EF CORE

在 postgresql 中不存在 varchar(max) 或 varchar(-1),就像在 SQLSERVER 中一样,在 postgresql 中数据类型是文本。

在本专栏中,我需要它是 SQL 服务器的 varchar(max) 和 Postgres 的文本。,如何实现?

每个提供商都需要了解迁移。

感谢您的帮助。

builder.Property(x => x.Foo).HasColumnType("varchar(-1)");

对不起,我的英文不太好

我不知道您使用的是数据库优先还是代码优先的方法

  • 对于数据库优先:您可以简单地运行包管理器控制台中的以下脚本,并确保已设置要导入的默认项目

对于 MSSQL

Scaffold-DbContext "Server=xxxxxx;Database=TestDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -F -OutputDir Models

以上将生成表的几乎所有属性


对于 Postgres

 Scaffold-DbContext "{YourConnectionString}" Npgsql.EntityFrameworkCore.PostgreSQL -F -OutputDir Models

如果有帮助请告诉我。

字符串的默认 ColumnType 将自动映射到最大长度字段。所以省略列类型你应该得到你想要的。

builder.Property(x => x.Foo)

如前所述,使用默认值应该可以满足您的需求,即文本列的最大长度。

builder.Property(x => x.Foo)

然而,如果你想要明确而不使用默认值,你可以使用这样的东西:

builder.Property(x => x.Foo).HasColumnType("nvarchar(max)");

如果只想改变最大长度,这个api也可以:

builder.Property(x => x.Foo).HasMaxLength(50);