2012-08-15 13 views
10

Che cosa fa esattamente EntityFramework per mappare le proprietà che hanno getter e setter personalizzati quando si utilizza Code First?Che cosa fa in primo luogo il codice EntityFramework con getter/setter di proprietà?

Chiama semplicemente il getter per una proprietà durante la serializzazione e il setter quando deserializza? Così ho potuto fare qualcosa di stupido come ...

public class Foo { 

    public DateTime TimeAccessed { 
     get { 
      return DateTime.Now; 
     } 
     set { 
      TimeDeserialized = DateTime.Now; 
     } 
    } 

    [NotMapped] 
    public DateTime TimeDeserialized { get; private set; } 
} 

Nota non ho alcun interesse reale utilizzando il codice di cui sopra, o qualcosa di simile ... è solo a scopo illustrativo.

Inoltre, quando si esegue il mapping di una proprietà con Code First, tutti i getter e setter devono essere public?

risposta

13

Sì; EF chiama i getter e setter.
Sarebbe effettivamente impossibile per EF lavorare in qualsiasi altro modo.

No; possono persino essere privati. (anche se la proprietà deve essere pubblica)

+0

Chiaro e conciso - Grazie! – Eric