Se prendiamo le due entità sottostanti come nell'esempio.
public class Person
{
public string Username {get;set;}
public string DisplayName {get;set;}
}
public class Worker:Person
{
public string Title {get;set}
public int SecurityId {get;set;}
}
Quando qualcuno si registra per la prima volta con questa app, le informazioni di base verranno acquisite e verrà creata una persona. Una volta che un amministratore arriva, potrebbe voler assegnare un ruolo a questa Persona. Ora i ruoli nel senso di autorizzazione non sono in discussione, c'è un RoleProvider. Tuttavia, se faccio diventare qualcuno un lavoratore, alcuni dettagli aggiuntivi devono essere catturati. In che modo i nuovi dettagli vengono archiviati al meglio è ciò che è in questione.
-
Potrei avere una classe WorkerProperties con i campi e dare Person - > Lavoratore con una relazione di 0,1 e 1:
-
Potrei avere tutti i campi come parte di Person e inserire solo cosa è obbligatorio. In fase di runtime, l'accesso al ruolo Persone sarebbe necessario capire quali campi sarebbero richiesti.
-
Potrei creare un lavoratore come mostrato sopra. Ereditando dalla persona. Con questa opzione c'è il problema che il PK è il nome utente registrato con. Avrei bisogno di cambiare in qualche modo il discriminatore colonna generata da EF per modificare sostanzialmente il tipo di oggetto in Worker.