2016-06-02 3 views
0

Ich habe eine Klasse, deren Eigenschaften aus Spalten in einer SQL Server-Tabelle aufgefüllt werden. Einige der Spalten lassen null zu, andere nicht. Bei numerischen Spalten (tinyint, int, datetime usw.) bedeutet dies, dass die Eigenschaften als Nullable<T> deklariert werden. Zum Beispiel:NullableAttribute oder Äquivalent in Asp.net

public class MyClass 
{ 
    public int MyNonNullableColumnProperty { get; set; } 
    public int? MyNullableColumnProperty { get; set; } 
} 

Nehmen wir an, Sie haben eine String-Eigenschaft, die aus einer Zeichenspalte zieht. Da Strings Klassen sind, gibt es natürlich keine Möglichkeit, die Eigenschaft selbst als Nullable oder Non-Nullable zu definieren. Allerdings möchte ich noch eine Möglichkeit, die Eigenschaft zu dekorieren, damit Programme wie benutzerdefinierten datengebundenen Steuerelementen wissen, dass es nicht Nullable ist.

Etwas wie folgt aus:

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] 
public class NullableAttribute : Attribute 
{ 
    public NullableAttribute(bool nullable) 
    { 
     Nullable = nullable; 
    } 
    public bool Nullable { get; private set; } 
} 

public class MyClass 
{ 
    [Nullable(false)] 
    public string MyNonNullableColumnProperty { get; set; } 
    [Nullable(true)] 
    public string MyNullableColumnProperty { get; set; } 
} 

Nun, ich bin ein großer Fan der Verwendung von Klassen, die eher in die .NET-Framework aufgebaut sind als meine eigenen zu bauen. Weiß jemand von so etwas?

Ich fand AllowNullAttribute, aber das scheint nicht nützlich für die Ablehnung von Null.

Eine andere Möglichkeit ist mit dem RequiredAttribute und AllowEmptyString = false

Nur neugierig Einstellung, wenn jemand über so etwas wie ein NullableAttribute gekommen ist.

Antwort

0

Ich glaube, RequiredAttribute von System.ComponentModel.DataAnnotations ist speziell für MVC Formularvalidierung (Datenmodell Attribut).

Die AllowNullAttribute speziell für Powershell ist (und funktioniert nicht für Strings)

Da Nullable-Attribute Validierung verwendet werden, gibt es keine 1-Stopp-Attribut für es scheint jeder Validation Framework ihre eigenen Attribute zu erfinden.

könnten Check-out StringLengthAttribute von System.ComponentModel.DataAnnotations Beispiel

[StringLength(300, MinimumLength = 0)] //allows any string from empty to 300 length 
Verwandte Themen