有人可以帮我解决这个问题:
编码:
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\n参数名称:值”}
实际上,我总是尝试使用单个 SaveChanges() 调用来保存相关实体,但我得到了同样的错误。所以,我必须做的是打多个电话,所以效果很好:
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 调用保存多个更改,所以我想知道这里有什么问题。