Ich habe ein Szenario, in dem ich Hilfe brauche.Aktualisieren von relationalen Entitäten
Nehmen wir an, dass es einen Benutzer gibt, der irgendeine Art von Musik hört.
class User
{
public virtual List<UserMusicType> Music { get; set; }
}
public class UserMusicType
{
public int ID { get; set; }
public MusicType name { get; set; }
}
public class MusicType
{
public int ID { get; set; }
public string Name { get; set; }
}
Es ist eine Form, wo ich Benutzer bin gefragt zu überprüfen/wählen alle Arten von Musik er hört. Er wählt drei Arten, nämlich {Pop, Rock und Elektronik}
CASE 1:
Jetzt möchte ich die Benutzereinheit aktualisieren und diese drei neuen Typen ein. Nach meinem Verständnis muss ich zunächst alle MusicTypes für diese Benutzer in der Datenbank speichern und dann diese neuen Typen erneut einfügen. Ist es ein richtiger Ansatz? Alle vorherigen entfernen und neue einfügen? Oder eine andere Möglichkeit, es zu tun?
CASE 2:
I MusicType Namen als String natürlich nehme. Jetzt, während der Benutzer Entity zu aktualisieren, muss ich zuerst die MusicType.ID danach hole ich der Lage sein, dies zu tun:
user.Music.Add(new UserMusicType() { ID = SOME_ID });
Gibt es einen besseren Ansatz für diesen Fall?
Ich werde froh sein, einige Antworten von erfahrenen Leuten in EF zu haben. Ich möchte lernen, ob es einen effizienten Weg gibt, dies zu tun. Oder auch wenn meine Annäherung/Models total falsch sind oder verbessert werden könnten.
Wenn i MusicType.ID in Ankreuzfelder, kann jeder Benutzer es ändern und einige zufällige ID-Typ, die nie existieren können. Wird EF nur diejenigen hinzufügen, die existieren? Oder fügt es eine neue ID hinzu? Muss ich mich wegen der Ausnahme Sorgen machen? – Waleed
@Waleed Es werden neue eingefügt, wenn Sie den Status auf "Added" geändert haben. Aber der bessere Weg ist es, zu überprüfen, ob die IDs des untergeordneten Typs bereits in der Sammlung "MusicType" vorhanden sind, die im Cache gespeichert ist. Also keine zusätzliche Abfrage an die Datenbank. –