Könnte mir jemand dabei helfen:Oracle ODP.Net und EF CodeFirst - Savechanges Fehler
Der Code:
Role r = new Role { ID = 1, Name = "Members" };
ctx.Roles.Attach(r);
//Saving User
User u = new User {
Login = login,
Password = password,
Status = 1
};
u.Roles.Add(r);
ctx.Users.Add(u);
ctx.SaveChanges();
Was ich versuche zu tun ist, um einen neuen Benutzer mit einem vorhandenen speichern Rolle. Benutzer- und Rollenklassen haben eine many-to-many-Beziehung durch fließend-api wie folgt abgebildet:
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithMany(r => r.Users)
.Map(x => {
x.ToTable("USER_ROLE_XREF", dbsch);
x.MapLeftKey("ID_USER");
x.MapRightKey("ID_ROLE");
});
Aber wenn der Savechanges aufgerufen wird, bekomme ich diesen Fehler: { "Der angegebene Wert ist keine Instanz des Typs ‚Edm.Decimal‘ \ r \ nParameter Name: Wert "}
Eigentlich immer versuche ich mit einem einzigen Savechanges verbundenen Unternehmen zu speichern() nenne ich den gleichen Fehler. so, was ich zu tun hatte, diese zu Zahl war mehrere Anrufe zu tätigen und so gut funktioniert:
Role r = new Role { ID = 1, Name = "Members" };
ctx.Roles.Attach(r);
//Saving User
User u = new User {
Login = login,
Password = password,
Status = 1
};
ctx.Users.Add(u);
ctx.SaveChanges();
//Assigning Member Role
u.Roles.Add(r);
ctx.SaveChanges();
Es ist mein Verständnis, dass EF Unterstützung mehr Änderungen mit einem einzelnen Savechanges aufruf zu speichern, so fragt ich mich, was falsch hier.
Hey Matt, danke für die Antwort. Aber ja, die Rolle existiert bereits in der Datenbank. Aber nehmen wir an, dass es neu ist (mit einer Diff-ID natürlich) und ich die Add-Methode anstelle von Attach verwende, bekomme ich den gleichen Fehler. Im Allgemeinen geschieht dies immer, wenn ich versuche, mehrere verbundene Entitäten mit einem einzigen SaveChanges-Aufruf hinzuzufügen (oder zu aktualisieren). – fcaldera