Я пытаюсь расширить класс ApplicationUser, чтобы я мог содержать информацию UserProfile в отдельной таблице. Однако мне не удается заставить это работать, и я получаю исключение, когда я вызываю метод UserManager.CreateAsync
в своем AccountController.Расширение MVC5 и Entity Framework 6 ApplicationUser, вызывающий недопустимую ошибку столбца при регистрации пользователя
Недопустимое имя столбца 'UserProfileId'.
Мой класс Application User
public class ApplicationUser : IdentityUser
{
[ForeignKey("UserProfileId")]
public virtual UserProfile UserProfile { get; set; }
public int UserProfileId { get; set; }
}
Мой профиль класса
public class UserProfile
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required, MaxLength(200)]
public string EmailAddress { get; set; }
[Required, MaxLength(50)]
public string FirstName { get; set; }
[Required, MaxLength(50)]
public string LastName { get; set; }
}
Мой первый объект сгенерированный код миграции
CreateTable(
"dbo.AspNetUsers",
c => new
{
Id = c.String(nullable: false, maxLength: 128),
UserName = c.String(),
PasswordHash = c.String(),
SecurityStamp = c.String(),
UserProfileId = c.Int(),
Discriminator = c.String(nullable: false, maxLength: 128),
})
.PrimaryKey(t => t.Id)
.ForeignKey("dbo.UserProfile", t => t.UserProfileId, cascadeDelete: true)
.Index(t => t.UserProfileId);
Мой код для создания нового пользователя Регистрация
var user = Mapper.Map<ApplicationUser>(model);
var result = await UserManager.CreateAsync(user, model.Password);
С Автоотображением конфигом
Mapper.CreateMap<RegisterViewModel, ApplicationUser>()
.ForMember(dest => dest.UserProfile, opt => opt.MapFrom(v => Mapper.Map<RegisterViewModel, Data.Model.UserProfile>(v)));
Mapper.CreateMap<RegisterViewModel, Data.Model.UserProfile>()
.ForMember(dest => dest.FirstName, opt => opt.MapFrom(v => v.FirstName))
.ForMember(dest => dest.LastName, opt => opt.MapFrom(v => v.LastName))
.ForMember(dest => dest.EmailAddress, opt => opt.MapFrom(v => v.EmailAddress));
ПРИМЕЧАНИЯ: Я попытался удалить int UserProfileId
и это вместо того, чтобы создало поле, называемое UserProfile_Id
, который вызвал проблемы и сам по себе.
У меня была та же проблема. Спасибо, что поделились своим решением! – mac10688
@ mac10688 без проблем. Мне потребовалось некоторое время, чтобы понять, что один из них. – dreza