我有一个带有数据库第一个entityframework的mvc项目。在Project I中有3个表。
用户>>> UsersInRoles<<<与多对多关系的角色。
和我的CreateUser代码在下面;
public bool CreateUser(string email, string password, string birthday,string firstname,string lastname)
{
bool result;
var dogumgunu = Convert.ToDateTime(birthday);
var sifre = FormsAuthentication.HashPasswordForStoringInConfigFile(password, "sha1");
var confirmation = CreateConfirmationToken(email);
try
{
var user = new User
{
UserName = email,
Password = sifre,
UserJoinDate = DateTime.Now,
UserBirthDay = dogumgunu,
UserConfirmationToken = confirmation,
UserID = Guid.NewGuid(),
MemberFirstName = firstname,
MemberLastName = lastname
};
var role = new Role
{
RoleName = "Client"
};
user.Roles.Add(role); //problem is here!!!!!!!!!
_bb.Users.AddObject(user);
_bb.SaveChanges();
result = true;
}
catch (Exception)
{
result = false;
}
return result;
}
在这段代码中,我是新用户创建的。我正在增加一个角色。但是此代码包含角色表中的新角色。我不想这样。我想只为UserInRoles表添加一个新用户。怎么了?谢谢你的回复。
答案 0 :(得分:0)
交换这两行:
_bb.Users.AddObject(user);
user.Roles.Add(role);
因为AddObject
将整个对象图转换为Added
状态。如果您之后添加角色,其状态将保持为Unchanged
。
您应首先从数据库中获取角色,或者创建仅具有现有Role
的{{1}}对象。 (所谓的存根实体)。
所以代替RoleId
你可以做到
new Role