Может ли кто-нибудь помочь мне с этим:
Код:
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();
Я пытаюсь сохранить нового пользователя с существующей ролью.Классы User и Role имеют отношение «многие ко многим», отображаемое fluent-api следующим образом:
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");
});
Но когда вызывается SaveChanges, я получаю эту ошибку: {"Указанныйзначение не является экземпляром типа 'Edm.Decimal' \ r \ nParameter name: value "}
На самом деле, я всегда пытаюсь сохранить связанные сущности с помощью одного вызова SaveChanges () Iполучите ту же ошибку.Итак, что я должен был сделать, чтобы понять это, это сделать несколько вызовов и так хорошо работает:
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();
Насколько я понимаю, поддержка EF для сохранения нескольких изменений одним вызовом SaveChanges, так что яинтересно, что здесь не так.