Sto usando EF6 e nella mia tabella clienti mi piace avere una colonna che sia di tipo GUID ed è unica. Non deve essere un primario. Quello che voglio usare per questo, è quello di consentire agli utenti di annullare l'iscrizione alle e-mail. Quindi, anche se ogni cliente ha un GUID sotto la colonna UnsubscribeEmailGuid
e lo mando sotto forma di link, quando lo cliccano, posso capire quale cliente è, e impostare la loro preferenza per annullare l'iscrizione.
Ora, come posso usare EF, definire questa colonna e accertarmi che abbia qualche valore quando viene creato un cliente. Ho provato:
public Guid UnsubscribeEmailGuid{ get; set; }
e:
Property(c => c.UnsubscribeEmailGuid)
.IsRequired()
.HasColumnAnnotation(IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute {IsUnique = true}));
Ma crea il cliente con Guid 00000000-0000-0000-0000-000000000000
.
Sono abbastanza sicuro di dover fare qualcosa per le proprietà di setter sopra ma il mio cervello ha smesso di funzionare!
Qualcuno può darmi una spinta? O forse sono completamente sulla strada sbagliata?
Grazie.
prova con questo esempio, devi inizializzare l'oggetto, ad esempio ho la classe utente e il tipo di proprietà GUID, quindi:
[Table( "users" )]
public class user{
[Index(IsUnique = true)]
public Guid UnsubscribeEmailGuid{ get; set; }
public user(){
this.UnsubscribeEmailGuid = new Guid();
}
}
quindi, quando si crea una nuova entità di utente, il costruttore assegna un valore nella proprietà UnsubscribeEmailGuid. in aggiunta a ciò è possibile utilizzare una DataAnotation per un indice univoco.