2016-10-31 1 views
3

ich ein Modell wie so müssen übereinstimmen:Geben Attribut max Länge varchar (max)

public int Id { get; set; } 

[Required] 
[StringLength(50, MinimumLength = 3)] 
public string Title { get; set; } 

[Required] 
[StringLength(50, MinimumLength = 3)] 
public string Slug { get; set; } 

[Required] 
[StringLength(100, MinimumLength = 3)] 
public string Body { get; set; } 

Wie Sie für die Body sehen können, habe ich eine Grenze von 100 festgelegt, aber in der Datenbank ist diese Spalte varchar(max) . Was kann ich für die Länge der Spalte varchar(max) setzen?

+0

'varchar (max)' hält bis zu 2GB Daten, glaube ich, also könnten Sie 'int.MaxValue' verwenden. @teovankot macht einen guten Punkt über die -3, also nehme ich an, dass mein Kommentar sein sollte: 'int.MaxValue - 2'. – wablab

+0

[StringLength (int.MaxValue)] –

Antwort

4

Sie haben zwei Möglichkeiten:

(1) Verwenden Sie int.MaxLength als maximumLength Argument des StringLengthAttribute Konstruktor:

[Required] 
[StringLength(int.MaxValue, MinimumLength = 3)] 
public string Body { get; set; } 

(2) Dekorieren Sie die Eigenschaft zusätzlich mit MaxLengthAttribute ohne Parameter (der Wert StringLengthAttribute wird ignoriert):

[Required] 
[StringLength(100, MinimumLength = 3)] 
[MaxLength] 
public string Body { get; set; } 
1

VARCHAR(MAX) ist 2^31-3 chrakters in unicode check here.

So können Sie einfach diese Nummer setzen. Aber weiß nicht, warum Sie benötigen dieses =):

[StringLength(2147483645, MinimumLength = 3)] 
+0

@frc oh, dann int.MaxValue ist das beste;) –