Entity Framework Code First ですべての poco プロパティの長さを設定する必要がありますか? プロパティに stringLength または maxlength/minlength を設定しないと、 nvarchar(max) になりますが、 nvarchar(max) はどれほど悪いのでしょうか? 開発段階でそのままにして、本番前に改善する必要がありますか?
3 に答える
長さを制限するプロパティごとに最大長を定義する必要があります。nvarchar(max)
データ型はデータ型とは異なることに注意してください。nvarchar(n)
ここで、n
は1〜4000の数値です。max
最大長を定義しない場合に取得するバージョンは、段落などの大きなテキストブロックを対象としています。非常に長い長さを処理できるため、データはレコードの残りのフィールドとは別に保存されます。nvarchar(n)
一方、は残りの行とインラインで格納されます。
後で待つのではなく、先に進んでこれらの値を今必要なように設定するのがおそらく最善です。必要なだけ大きい値を選択するので、値を増やす必要はありません。nvarchar(n)
その情報を効率的に保存します。たとえば、anvarchar(200)
は必ずしも200文字のスペースを占めるとは限りません。実際に入れられたものを格納するのに十分なスペースと、その長さを節約するための追加のバイトのみを使用します。
したがって、可能な限り、エンティティのテキストフィールドに制限を設定する必要があります。
NVARCHAR - 可変長フィールドです。そのため、必要なスペースだけを消費します。一方、NCHAR は、NVARCHAR のようにオンデマンドではなく、必要なすべてのスペースを割り当てます。MSDN は、列のデータ エントリのサイズが大幅に異なる可能性がある場合は、nvarchar を使用することをお勧めします。プロジェクトの初期段階では、これが私のやり方です。必要に応じて調整できます。
次のブログ投稿によると、nvarchar(max) は、実際の値のサイズが 4000 シンボルに達するまでは ntext と同じではありません (制限が 8K であり、widechars は 1 文字あたり 2 バイトを使用するため)。このサイズに達する限り、ntext とほとんど同じように動作します。私としては、 nvarchar(max) データ型の使用を避ける正当な理由はありません。