Sto lavorando con un progetto EF Primo progetto, e tutto va bene. Ho una semplice classe, cliente. Nella mia classe cliente ho un campo che voglio crittografare (sì, so di poter cifrare a livello di database ma i requisiti dettano la crittografia a livello di dominio/codice), quindi spero di poter fare qualcosa di simile al seguente:Codice quadro entità Primo, setter non vuoto o getter?
public class Customer
{
public int CustomerID { get; set; }
public string FieldToEncrypt { get; set { _FieldToEncrypt = MyEncryptionFunction.Encrypt(); } }
}
Tuttavia, suppongo che se il setter ha una definizione, un'entità codice del framework primo può ignorare che la proprietà durante la generazione dello schema. Quindi la mia domanda è: c'è un modo per fare il codice EF prima con i getter/setter forniti, o dovrei spostare questa funzionalità in un costruttore? Devo sostituire uno dei metodi/eventi che si verificano quando il contesto sta salvando?
EDIT * *** *** *** *** *** ****
Come nota, io sto usando DataService per trasmettere i dati su un servizio di protocollo OData. Questo genera automaticamente metodi di inserimento/aggiornamento/selezione. Alcuni dei suggerimenti richiedono la creazione di una seconda proprietà, ma la classe DataService non sembra passare attraverso le proprietà NotMapped. Questo getta un po 'una piega nella mia precedente domanda.
Se si sta eseguendo la crittografia su una stringa, suggerirei di inserirlo il più vicino possibile all'input. Ad esempio, dove si esegue 'FieldToEncrypt =" asdf ";' (crittografia gestita nel setter), passare a 'FieldToEncrypt = MyEncryptionFunction.Encrypt (" asdf ");' –
Hai provato? Ci sono un certo numero di risposte simili su SO che suggeriscono che questo funziona fuori dalla scatola nel modo che stai cercando. Vedi http://stackoverflow.com/questions/11962532/what-does-entityframework-code-first-do-with-property-getters-setters e http://stackoverflow.com/questions/8990319/have-a-custom -setter-on-property-for-ef-code-first-model-entity – Zeph
Il secondo link che hai fornito sembra essere più vicino a ciò di cui ho bisogno. Tuttavia, sta parlando di "non mappare" il campo. Voglio che il campo sia mappato, ancora. Voglio solo che il valore mappato venga trasformato prima che il valore sia bloccato nel database. Immagino di avere una domanda più profonda, e cioè: In codice EF Prima, il codice chiama i getter e setter prima/dopo l'inserimento? – Richthofen