我在创建UserProfile
表中的自定义字段时遇到了问题。
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public int? AddressId { get; set; }
public int? UserDetailId { get; set; }
public string UserName { get; set; }
public UserDetail UserDetail { get; set; }
}
public class RegisterModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
public virtual UserDetail UserDetail { get; set; }
}
public class UserDetail
{
public int Id{get;set;}
public string FirstName{get;set;}
public string LastName{get;set;}
}
我还向DbContext
类添加了UserDetail
public DbSet<UserDetail> UserDetails{get;set;}
问题在于我使用时
Web WebSecurity.CreateUserAndAccount(model.UserName, model.Password,
new { UserDetail = new UserDetail ()
}, false);
经常出现一些错误,例如:没有从对象类型映射到...
但是,如果我定义一个简单类型(如string
,int
)而不是UserDetail
,它就能正常工作。
有人可以帮我解决这个问题吗?非常感谢!
var userProfile = context.UserProfiles.SingleOrDefault(u => u.UserName == model.UserName);
中,我得到了一个null
值,有什么原因吗?当我检查数据库时,发现用户名已经被创建,但 UserDetails 表为空,显然是因为那一行返回了 null。 - J86