【发布时间】:2017-07-25 19:33:15
【问题描述】:
我的数据库中有一个自定义用户表,我想与 aspnetusers 表创建一对一的关系,这样当我注册新客户时,通过 UserManager 的 applicationuser 类应该添加 用户名、电子邮件、密码和学校代码 到用户表,并在自己的表中添加一个 fk。有没有实现这种场景的教程/示例?
我正在尝试添加与我的用户表的一对一关系,但 fk 与 pk 不同
- 用户表 [列]
- 用户名
- 密码
- 学校代码
- 用户 ID [pk]
ASPNETUsers 表 [标准列]
- 标识,[pk]
- 用户名,
- 密码哈希,
- 安全邮票,
- 判别器,
- 电子邮件,
- 已确认电子邮件,
- 电话号码,
- 已确认电话号码,
- 启用双因素,
- LockoutEndDateUtc,
- LockoutEnabled,
- AccessFailedCount
- userId [fk 到用户表]
我在 ApplicationUser 类中添加了属性
public class ApplicationUser : IdentityUser
{
public virtual User user { get; set; }
public int UserID { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>()
.HasRequired(i => i.user).WithRequiredDependent(i => i.appUser);
}
}
public class User
{
public int UserID { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public virtual ApplicationUser appUser { get; set; }
}
我还需要做什么,是否正确?实体框架如何与这个一起工作?
更新 在运行它给我错误 MySql.Data.MySqlClient.MySqlException:“on 子句”中的未知列“Extent8.appUser_Id”
如果我定义
modelBuilder.Entity<ApplicationUser>().HasKey(u => u.UserID);
在 OnModelCreating 中,它会尝试通过此 UserID 链接 AspNetRoles 和 Claims 等表,当然会崩溃。
ApplicationUser_Claims_Source_ApplicationUser_Claims_Target: : 引用约束的Dependent Role中所有属性的类型必须与Principal Role中对应的属性类型相同。实体“IdentityUserClaim”上的属性“UserId”类型与引用约束“ApplicationUser_Claims”中实体“ApplicationUser”上的属性“UserID”类型不匹配。 ApplicationUser_Logins_Source_ApplicationUser_Logins_Target: : 引用约束的Dependent Role中所有属性的类型必须与Principal Role中对应的属性类型相同。实体“IdentityUserLogin”上的属性“UserId”类型与引用约束“ApplicationUser_Logins”中实体“ApplicationUser”上的属性“UserID”类型不匹配。 ApplicationUser_Roles_Source_ApplicationUser_Roles_Target: : 一个参照约束的Dependent Role中所有属性的类型必须与Principal Role中对应的属性类型相同。实体“IdentityUserRole”上的属性“UserId”类型与引用约束“ApplicationUser_Roles”中实体“ApplicationUser”上的属性“UserID”类型不匹配。
【问题讨论】:
-
完成。我希望你有足够的耐心,理解我的解释并阅读我推荐的链接。祝你好运!!!
-
非常感谢 Alisson!我被困两天了!!
标签: asp.net-mvc entity-framework-6 asp.net-identity entity-relationship dbcontext