4

在前面的EF,我可以这样做:如何在EF Core中配置固定长度的列?

entityTypeBuilder 
    .Property(b => b.Foo) 
    .IsRequired() 
    .HasMaxLength(10) 
    .IsFixedLength(); 

这将产生像

Foo = c.String(nullable: false, maxLength: 10, fixedLength: true) 

的东西迁移然而,在EF核心没有IsFixedLength()

有没有其他方式做到这一点?

回答

8

目前(EF核1.1.0),你只能指定栏直接输入:.HasColumnType("char(123)")

请确保您的数据库引擎明白这一点的价值!它按“原样”通过。

另外请注意,你应该在这里写出所有需要的尺寸/长度/精度值,因为.HasMaxLength()值将被忽略。

+1

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

+0

EF Core不是E6的完整替代品,有很多[github上的问题](https://github.com/aspnet/EntityFramework/issues)。作为一种解决方法,您可以创建自己的扩展方法('IsFixedLength(length)'),它调用HasColumnType($“char({length})”)'并从一个位置控制所有这些魔法字符串。 – Dmitry

+1

关于'HasMaxLength' - 是的,它存在并且工作正常。但是,如果将'HasColumnType(“char(123)”)和'HasMaxLength(100)'应用于相同的属性/列 - 123“胜出”。 – Dmitry