如何在EF Core中配置固定长度列?

gro*_*kky 7 entity-framework ef-code-first ef-migrations entity-framework-core ef-fluent-api

在之前的EF中,我可以这样做:

  entityTypeBuilder
    .Property(b => b.Foo)
    .IsRequired()
    .HasMaxLength(10)
    .IsFixedLength();
Run Code Online (Sandbox Code Playgroud)

这将产生类似的迁移

Foo = c.String(nullable: false, maxLength: 10, fixedLength: true)
Run Code Online (Sandbox Code Playgroud)

但是在EF Core中没有IsFixedLength().

还有其他方法吗?

Err*_*Efe 12

实际上,对于 2.1 版,这是实现为:

entity.Property(e => e.Name).HasMaxLength(X).IsFixedLength();
Run Code Online (Sandbox Code Playgroud)

  • @Martijn 确保您的依赖关系图中某处有 Microsoft.EntityFrameworkCore.Relational,因为 IsFixedLength() 函数是扩展方法,不在主 Microsoft.EntityFrameworkCore 程序集中。 (4认同)

Dmi*_*try 10

目前(EF Core 1.1.0)您只能直接指定列类型: .HasColumnType("char(123)")

请确保您的数据库引擎了解此值!它按"原样"传递.

另请注意,您应在此处写下所有必需的尺寸/长度/精度值,因为.HasMaxLength()值将被忽略.

  • 遗憾的是,EF Core 似乎并不“完整”。另外,[根据文档](http://docs.microsoft.com/en-us/ef/core/modeling/max-length) 有一个最大长度...... (2认同)