Подтвердить что ты не робот

Как установить столбец в SQL Server на varchar (max) с помощью ASP.net EF Codefirst Data Annotations?

Я искал по сети, пытаясь понять правильный синтаксис, чтобы иметь Entity Framework Code. Сначала создайте таблицу со столбцом: varchar (max).

Это то, что у меня есть. По умолчанию это создает varchar (128). Как создать varchar (max)?

Я пробовал [MaxLength] без успеха.

Любая помощь будет оценена по достоинству. Спасибо!

[Column(TypeName = "varchar")]
public string MediaDesc { get; set; }
4b9b3361

Ответ 1

[Column(TypeName = "varchar(MAX)")]

Удивительно, но самое очевидное решение работает.

Атрибут [MaxLength] создает только столбец varchar с максимальной длиной, которая не MAX, но - в моем случае (SQL Server Express 2008 R2) - 8000.

Ответ 2

Это даст вам nvarchar(max):

[StringLength(int.MaxValue)]

Я не думаю, что есть атрибут для принудительного не-unicode (вы уверены, что хотите это?), поэтому для varchar(max) вам нужна настройка в DbContext:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Entity>().Property(x => x.MediaDesc).IsUnicode(false);
}

Ответ 3

Использовать аннотацию [MaxLength].

[Column(TypeName = "varchar")]
[MaxLength]
public string MediaDesc { get; set; }

Ответ 4

[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 символов