-1

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

楷模:

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 个错误。一个错误是说该Id字段normaluser应该是唯一的,另一个是说该User字段应该是唯一的。它们都是必需的标准,但我认为第一个是由Id字段的自动增量处理的,我没想到第二个,因为我刚刚创建了User.

使用这种方法我什至做正确的事吗?

更新:

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

4

1 回答 1

0

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

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

var newUser = db.Users.Where(u => u.UserName == user.UserName).FirstOrDefault();
var normaluser = new NormalUser(model) { User = newUser };
于 2013-08-23T09:24:14.017 回答