2014-04-05 16 views
10

Ho un modello che ho creato è bu EF6:impostare una colonna stringa da annullabile in EF6

public partial class Comment 
{ 
    [DisplayName("شناسه نظر")] 
    public int Id { get; set; } 

    [Required(ErrorMessage = "متن نظر را وارد کنید")] 
    [DisplayName("متن نظر")] 
    public string CommentText { get; set; } 

    [DisplayName("تعداد پسندیدن ")] 
    public long LikeCount { get; set; } 

    [DisplayName("تعداد نپسندیدن")] 
    public long DisLikeCount { get; set; } 

    [DisplayName("تاریخ انتشار ")] 
    public System.DateTime PublishDate { get; set; } 

    [DisplayName("وضعیت نمایش ")] 
    public string Visible { get; set; } 

    [DisplayName("نام کاربری ")] 
    public Nullable<string> AutherUserName { get; set; } 

    [DisplayName("شناسه نظراصلی")] 
    public Nullable<int> CommentFKId { get; set; } 

    [DisplayName("شناسه کاربر")] 
    public Nullable<int> StudentId { get; set; } 

    [DisplayName("شناسه محتوا ")] 
    public Nullable<int> ContentId { get; set; } 

    public virtual Comment Comments { get; set; } 
    public virtual Comment Comment1 { get; set; } 
    public virtual Student Student { get; set; } 
    public virtual Content Content { get; set; } 
} 

Come potete vedere ho diverse Nullable colonne int nel mio modello, ma non posso impostare una colonna stringa nulla:

public Nullable<string> AutherUserName { get; set; } 

E ho ottenuto questo errore:

Il tipo 'string' deve essere un non tipo di valore -nullable Per utilizzare come parametro 'T' nel tipo generico o metodo 'System.Nullable'

sto lavorando con MVC4

+0

Possibile duplicato di http://stackoverflow.com/questions/9236468/the-type-string-must-be-a-non-nullable-type-in-order-to-use-it-as-parameter- t –

+0

Se si desidera avere un valore null nella stringa anche se il proprio ui fornisce uno spazio vuoto, è possibile farlo nel setter della proprietà. –

risposta

19

stringhe sono tipi di riferimento, quindi sono già "annullabili ". Solo i tipi di valore (come int) possono essere nullable in quanto non possono altrimenti essere nulli.

+0

Quindi vuoi dire se la casella di testo della mia colonna è vuota sarà Null? –

+4

Se il valore della proprietà stringa sul modello è nullo, allora sarà nullo sì. Se fosse "vuoto" (la stringa vuota), allora non sarebbe nullo. Perché una colonna di stringhe sia non nullable, dovresti usare anche l'attributo [Required]. –

+0

Qualche consiglio se il mio progetto Database "not-null' prima ha prodotto una classe con una semplice proprietà' stringa'? Non includeva l'attributo [Required], ma nel suo ModelBuilding, presumibilmente stabiliva che la colonna era 'not-null'; c'è un modo fluido per assicurare che la proprietà sia "nulla"? E cambiarlo se non lo è? –

Problemi correlati