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