Ответ 1
[Column(TypeName = "varchar(MAX)")]
Удивительно, но самое очевидное решение работает.
Атрибут [MaxLength]
создает только столбец varchar
с максимальной длиной, которая не MAX, но - в моем случае (SQL Server Express 2008 R2) - 8000.
Я искал по сети, пытаясь понять правильный синтаксис, чтобы иметь Entity Framework Code. Сначала создайте таблицу со столбцом: varchar (max).
Это то, что у меня есть. По умолчанию это создает varchar (128). Как создать varchar (max)?
Я пробовал [MaxLength] без успеха.
Любая помощь будет оценена по достоинству. Спасибо!
[Column(TypeName = "varchar")]
public string MediaDesc { get; set; }
[Column(TypeName = "varchar(MAX)")]
Удивительно, но самое очевидное решение работает.
Атрибут [MaxLength]
создает только столбец varchar
с максимальной длиной, которая не MAX, но - в моем случае (SQL Server Express 2008 R2) - 8000.
Это даст вам nvarchar(max)
:
[StringLength(int.MaxValue)]
Я не думаю, что есть атрибут для принудительного не-unicode (вы уверены, что хотите это?), поэтому для varchar(max)
вам нужна настройка в DbContext:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Entity>().Property(x => x.MediaDesc).IsUnicode(false);
}
Использовать аннотацию [MaxLength].
[Column(TypeName = "varchar")]
[MaxLength]
public string MediaDesc { get; set; }
[Column(TypeName = "varchar(MAX)")]
приводит к varchar (Max) в базе данных. Если у вас есть настраиваемое соглашение, устанавливающее строки MaxLength равным 100,
modelBuilder
.Properties<string>()
.Configure(c => c.IsUnicode(false).HasMaxLength(100));
вам нужно включить атрибут MaxLength [Column(TypeName = "varchar(MAX)"), MaxLength]
. Если вы этого не сделаете, вы получите varchar (MAX) в базе данных, но проверка будет выдавать более 100 символов