mvc实体框架多对多用户和角色插入

时间:2013-05-28 08:06:50

标签: asp.net-mvc entity-framework many-to-many

我有一个带有数据库第一个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表添加一个新用户。怎么了?谢谢你的回复。

1 个答案:

答案 0 :(得分:0)

交换这两行:

_bb.Users.AddObject(user);
user.Roles.Add(role);

因为AddObject将整个对象图转换为Added状态。如果您之后添加角色,其状态将保持为Unchanged

您应首先从数据库中获取角色,或者创建仅具有现有Role的{​​{1}}对象。 (所谓的存根实体)。

所以代替RoleId你可以做到

new Role