2011-12-09 10 views
6

Ho una classe:Come mappare una proprietà come non una colonna in EF 4.1

public class classParty 
{ 
    private int _arrivedCount; 

    public int PartyID {get; private set;} 
    public DateTime PartyDate {get; private set;} 
    public int ArrivedCount 
    { 
     get 
     { 
      return _arrivedCount; 
     } 

     set 
     { 
      _arrivedCount = value; 
     } 
    } 
} 

posso mappare la PartyId e la PartyDate ma io non avere una colonna per ArrivedCount (si tratta di un momento in conteggio del tempo, non persiste).

Come si comunica a EF 4.1 di interrompere la ricerca di una colonna denominata "ArrivedCount"? Non è nel tavolo. Non sarà sul tavolo. È semplicemente una proprietà dell'oggetto e basta.

Grazie in anticipo.

MODIFICA: Ecco la configurazione API Fluent per classParty.

public class PartyConfiguration : EntityTypeConfiguration<classParty> 
{ 
    public PartyConfiguration() 
     : base() 
    { 
     HasKey(p => p.PartyID); 

     Property(p => p.PartyID) 
      .HasColumnName("PartyID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) 
      .IsRequired(); 
     Property(p => p.PartyDate) 
      .HasColumnName("PartyDate") 
      .IsRequired(); 

     ToTable("Party"); 
    } 
} 

risposta

8
modelBuilder.Entity<classParty>().Ignore(x => x.ArrivedCount); 
+0

Sì, questo è tutto. Esiste una riga di codice da aggiungere alla classe EntityTypeConfiguration? Mi piacerebbe che tutti i mapping (e "unmappings") fossero in un posto. Ma se no, questo funziona bene. –

+1

@TomPadilla: usa semplicemente "Ignora (x => x.ArrivedCount);" nel tuo costruttore 'PartyConfiguration'. – Slauma

14

con annotazioni di dati:

[NotMapped] 
public int ArrivedCount 
//... 

o utilizzando API Fluent:

modelBuilder.Entity<classParty>() 
    .Ignore(c => c.ArrivedCount); 
Problemi correlati