Objekte können ihren Typ nicht ändern, niemals. Wenn Sie die "Administrator"-Einstellung für einen Benutzer (sinnvoll) ändern wollen, sollten Sie dies mit einem Attribut/einer Eigenschaft tun, nicht mit einem Typnamen.
Sie könnten zum Beispiel eine Assoziation zwischen einer User
Objekt und ein Administrator
Objekts, anstatt zu wollen ersetzen. le site User
Objekt mit einer Administrator
Untertyp.
Ich habe über diese Idee in einem alten Blogbeitrag geschrieben :
Eine der mentalen Barrieren, die Sie beim Entwurf einer guten objektrelationalen Abbildung überwinden müssen, ist die Tendenz, hauptsächlich in objektorientierten Begriffen oder in relationalen Begriffen zu denken, je nachdem, was zu Ihrer Persönlichkeit passt. Ein gutes objektrelationales Mapping beinhaltet jedoch sowohl ein gutes Objektmodell als auch ein gutes relationales Modell. Nehmen wir zum Beispiel an, Sie haben eine Datenbank mit einer Tabelle für Personen und damit verbundenen Tabellen für Mitarbeiter und Kunden. Eine einzelne Person könnte in allen drei Tabellen einen Datensatz haben. Aus streng relationaler Sicht könnten Sie nun eine Datenbank-VIEW für Mitarbeiter und eine weitere für Kunden erstellen, die beide Informationen aus der Personentabelle enthalten. Wenn Sie die eine oder andere VIEW verwenden, können Sie eine einzelne Person vorübergehend als "nur" einen Mitarbeiter oder "nur" einen Kunden betrachten, obwohl Sie wissen, dass sie beides ist. Jemand, der aus dieser Weltanschauung kommt, könnte also versucht sein, eine OO-Abbildung vorzunehmen, bei der Employee und Customer beide (direkte) Unterklassen von Person sind. Da eine einzelne Person sowohl Mitarbeiter- als auch Kundendatensätze hat (und da keine Person-Instanz gleichzeitig dem konkreten Untertyp Employee und Customer angehören kann), muss die OO-Beziehung zwischen Person und Employee eher eine Komposition als eine Vererbung sein, und das Gleiche gilt für Person und Customer.
Um Ihre Frage direkt zu beantworten: Es gibt keine Möglichkeit, diese Spalte mit EF zu ändern. Sie könnten es natürlich in direktem SQL tun. Aber aus den oben genannten Gründen würde ich Ihnen raten, dieses Design zu ändern.