【问题标题】:Create Model From Another Controller从另一个控制器创建模型
【发布时间】:2013-08-23 17:24:14
【问题描述】:

我有一个复杂的用户类型 (more info),它可能包含基于不同类型的不同信息。现在,当我想注册用户时,我想在其他数据库表中添加必要的信息。目前我正在尝试这样做:

型号:

public class NormalUser
{
    [Key]
    public string Id { get; set; }

    //....

    [Required]
    public virtual User User { get; set; }
}

控制器

                if (await Users.Create(user) && await Secrets.Create(new UserSecret(model.UserName, model.Password)) &&
                    await Logins.Add(new UserLogin(user.Id, IdentityConfig.LocalLoginProvider, model.UserName)))
                {
                    var normaluser = new NormalUser(model) { User = user };
                    db.NormalUsers.Add(normaluser);
                    db.SaveChanges();
                    //....

但是,当我运行它时,最后一行出现 2 个错误。一个错误是说normaluserId 字段应该是唯一的,另一个是说User 字段应该是唯一的。它们都是必需的条件,但我认为第一个是由 Id 字段的自动增量处理的,我没想到第二个,因为我刚刚创建了 User

我用这种方法做对了吗?

更新:

通过将Id 字段的类型从string 更改为int 来修复第一个问题

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-scaffolding asp.net-mvc-5


    【解决方案1】:

    嗯,找到了我的答案。首先,我必须将 Id 字段的类型从 string 更改为 int 以启用自动增量。

    其次,我错误地使用了新创建的User 对象。我必须从数据库中加载信息:

    var newUser = db.Users.Where(u => u.UserName == user.UserName).FirstOrDefault();
    var normaluser = new NormalUser(model) { User = newUser };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多