5

Ho un database database esistente con cui comunicare e sto utilizzando il database EF 5.0 per primo, il problema è che se creo qualsiasi decorazione di dati come [stringlength(50)] nella classe e poi i database vengono caricati, quando "carica dal database" tutte le annotazioni dei dati sono sparite. Come posso fare per tenerli?perdere datiAnnuncio quando si carica il modello dalla banca dati

+0

Ho aggiornato la mia risposta per mostrare come ... – AminSaghi

risposta

8

È molto semplice: Non puoi! Poiché tali codici sono generati automaticamente e verranno sovrascritti su ogni aggiornamento o modifica del modello.

Tuttavia, è possibile ottenere ciò che è necessario estendendo i modelli. Supponiamo che EF generato il seguente classe entità per voi:

namespace YourSolution 
{ 
    using System; 
    using System.Collections.Generic; 

    public partial class News 
    { 
     public int ID { get; set; } 
     public string Title { get; set; } 
     public string Description { get; set; }   
     public int UserID { get; set; } 

     public virtual UserProfile User{ get; set; } 
    } 
} 

e si vuole fare un po 'arounds di lavoro per conservare i tuoi ti annotazioni di dati e attributi. Quindi, attenersi alla seguente procedura:

In primo luogo, aggiungere due classi di alcuni dove (dove si vuole, ma è meglio essere in Models) come la seguente:

namespace YourSolution 
{ 
    [MetadataType(typeof(NewsAttribs))] 
    public partial class News 
    { 
     // leave it empty. 
    } 

    public class NewsAttribs 
    {    
     // Your attribs will come here. 
    } 
} 

quindi aggiungere quali proprietà e gli attributi che si desidera la seconda classe - NewsAttribs qui. :

public class NewsAttrib 
{ 
    [Display(Name = "News title")] 
    [Required(ErrorMessage = "Please enter the news title.")] 
    public string Title { get; set; } 

    // and other properties you want... 
} 

Note:

1) Lo spazio dei nomi della classe entità generato e le vostre classi deve essere lo stesso - qui YourSolution.

2) la prima classe deve esserepartial e il suo nome deve essere la stessa di EF classe generata.

passare attraverso questo e le vostre attribs mai stato perso di nuovo ...

+1

ho finito per fare somthing come questo folowing questo tutorial http://msdn.microsoft. it/it/us/library/ee256141 (v = vs.100) .aspx – EricGS

+0

esempio fantastico - Il mio errore principale non era avere lo spazio dei nomi uguale. Vorrei aver trovato questo esempio prima! Vorrei che il titolo di questa discussione fosse meglio essere più facile da trovare. Estensione di classi parziali e aggiunta di DataValidation a MVC. Bella risposta. grazie. – BriOnH