2016-06-01 21 views
1

Mein Kontext ist => enter image description hereEinfügen/Aktualisieren von Daten in Viele zu viele Entity Framework. Wie mache ich es?

Unter Verwendung dieses Modells über Entity Framework Code 1., wird Datentabelle in der Datenbank =>

1) Benutzertabelle

enter image description here

2) Rolle Tabelle

enter image description here

3) Userrole Tabelle - Eine neue verknüpfte Tabelle

enter image description here

Modell für Benutzer automatisch erstellt ist =>

enter image description here

Modell für Rollen ist =>

enter image description here

und meine O Data qu ery für die Arbeit richtig

enter image description here

Jetzt Rekord für einzelne Benutzer/Rollen Tabelle einfügen, welche Abfrage soll ich schreiben, wenn ich Datensatz Userrole Tabelle einfügen möchten

jemand

eine Idee haben, können
+2

Der Punkt von EF (ein ORM zu sein) besteht darin, die Datenbank wegzuspulen und mit * Objekten * statt mit Tabellen/Zeilen/Spalten umzugehen. Deshalb müssen Sie sich nicht fragen, wie "INSERT" in "UserRoles" -Tabelle eingefügt wird? " sondern "Wie verknüpfe ich eine neue' Rolle' mit einem 'Benutzer'" und jetzt ist die Antwort viel klarer: 'user.Roles.Add (role)' oder 'role.Users.Add (user)' (EF kennt dass beide der letzten Aussagen 2 Enden der gleichen Beziehung sind, so dass sie effektiv die gleichen sind) – haim770

+0

Wie benutze ich es mit einfachen Odata-Client? wenn ich neue Benutzer hinzufügen möchte, habe ich folgende erwarten metadataManagementClient.For () .Set (neue Benutzer {Id = neue Guid(), Name = 'Test'}). InsertEntryAsync(); Jetzt Wie verknüpfe ich eine neue Rolle mit einem Benutzer? bitte ausarbeiten? – Neo

Antwort

1
// Fetch the user. 
var user = await metadataManagentClient.For<User>().FirstOrDefaultAsync(x => x.Name == "Test"); 


// If you want to add a new role. 
var newRole = new Role() 
{ 
    Name = "My new role" 
}; 
user.Roles.Add(newRole); // Adds new role to user. 

// If you want to add an existing role 
var existingRole = await metadataManagentClient.For<Role>().FirstOrDefaultAsync(x => x.Name == "My Existing Role"); 
user.Roles.Add(existingRole); // Adds existing role to user. 

// Save changes. 
metadataManagentClient.SaveChanges(); 

Oder

await metadataManagentClient.SaveChangesAsync(); 

Sie m Auch möchte ich ID einstellen. Aber achten Sie auf new Guid(), da es eine leere Guid generiert. Was Sie wahrscheinlich wollen (wenn Sie IDENTITY nicht verwenden) ist Guid.NewGuid().

+0

einfacher Odata Client hat keine Methoden wie 'SaveChangesAsync' und' SaveChanges' – Neo