【问题标题】:mvc entity framework many to many user and role insertmvc 实体框架多对多用户和角色插入
【发布时间】:2013-05-28 08:06:50
【问题描述】:

我有一个带有数据库优先实体框架的 mvc 项目。在项目中,我有 3 个表。

Users >>> 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;
    }

在此代码中,我是新用户创建的。我正在添加一个角色。但是此代码在角色表中包含一个新角色。我不想这样。我只想在 UsersInRoles 表中添加一个新用户。怎么了?谢谢回复。

【问题讨论】:

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


    【解决方案1】:

    交换这两行:

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

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

    您应该首先从数据库中获取角色,或者创建一个只有现有RoleIdRole 对象。 (所谓的存根实体)。

    所以你可以代替new Role

    var role = _bb.Roles.Single(r => r.RoleName == "Client");
    

    【讨论】:

    • 感谢 gert 但我无法理解。请告诉我如何在我的 UsersInRoles 表中添加角色?
    • 我明白了。但我能理解。请写一个小样本?感谢您的帮助。我很抱歉我的笨蛋。:)
    • 上帝保佑你。谢谢你的一切。
    猜你喜欢
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多