Using Int32.MaxValue
may lead to some problems when connected to a SQL Server database. Using Int32.MaxValue
in either the attribute or the api throws an exception stating "String column with MaxLength greater than 4000 is not supported". But, using either of the following methods works fine for me in EF 4.1:
You can use the MaxLengthArritbute
, e.g.
[MaxLength]
public string Text { get; set; }
Or the fluent API, like so
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.Property(s => s.Text)
.IsMaxLength();
}
To enforce the use of ntext
use one of the following:
[MaxLength]
[Column(TypeName = "ntext")]
public string Text { get; set; }
Or the fluent API, like so
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.Property(s => s.Text)
.HasColumnType("ntext")
.IsMaxLength();
}
You may not need the MaxLength
attribute in this case.
UPDATE (2017-Sep-6):
As Sebazzz pointed out in his comment ntext
(and text
) has been deprecated in SQL Server 2016. Here is a link to further information:
https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…