4

は、私がこれを行うことができます: EFコアで固定長カラムを設定するにはどうすればよいですか?前のEFで

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

のようなもので、マイグレーションを生成する

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

しかしEFコアに何IsFixedLength()はありません。

これを実行する他の方法はありますか?

答えて

8

現在(EFコア1.1.0)あなたが唯一の直接カラムの型を指定することができます。.HasColumnType("char(123)")

は、あなたのDBエンジンは、この値を理解していることを確認してください!それは "そのまま"渡されます。

また、.HasMaxLength()の値は無視されるため、ここに必要な寸法/長さ/精度の値をすべて記述するようにしてください。

+1

これは残念ですが、EFコアは完全ではないようです。また、[ドキュメントによる](http://docs.microsoft.com/en-us/ef/core/modeling/max-length)最大長があります。 – grokky

+0

EFコアはE6の完全な置き換えではありません、githubに関する多くの問題(https://github.com/aspnet/EntityFramework/issues)があります。この問題を回避するには、 'HasColumnType($" char({length}) ")を呼び出し、すべてのマジック文字列を1か所から制御する独自の拡張メソッド(' IsFixedLength(length) ')を作成することができます。 – Dmitry

+1

'HasMaxLength'について - はい、存在し、正常に動作しています。しかし、 'HasColumnType(" char(123) ")'と 'HasMaxLength(100)'を同じプロパティ/カラムに適用すると、123が "勝つ"。 – Dmitry

関連する問題