Использование Int32.MaxValue
может привести к некоторым проблемам при подключении к базе данных SQL Server. Использование Int32.MaxValue
в атрибуте или в API вызывает исключение о том, что «String column with MaxLength больше 4000 не поддерживается». Но использование одного из следующих методов прекрасно работает в EF 4.1:
Вы можете использовать MaxLengthArritbute
, например,
[MaxLength]
public string Text { get; set; }
Или свободный API, вот так
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.Property(s => s.Text)
.IsMaxLength();
}
Для принудительного использования ntext
используйте одно из следующего:
[MaxLength]
[Column(TypeName = "ntext")]
public string Text { get; set; }
Или свободный API, вот так
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.Property(s => s.Text)
.HasColumnType("ntext")
.IsMaxLength();
}
В этом случае вам может не понадобиться атрибут MaxLength
.
ОБНОВЛЕНИЕ (2017-Sep-6):
Как отметил Себаззз в своем комментарии, ntext
(и text
) устарел в SQL Server 2016. Вот ссылка на дополнительную информацию:
https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016