我正在尝试创建一个Profile
表与 Asp.Net Identity 表集成:AspNetUsers
。我正在将 Code First 迁移与 EF 6.0 结合使用。
这是我的用户类:
public class ApplicationUser : IdentityUser
{
public ApplicationUser()
{
}
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public UserStatus Status { get; set; }
public virtual Profile Profile { get; set; }
}
这是我的个人资料类:
public class Profile
{
public int ID { get; set; }
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
我的 DataContext 中有配置:
modelBuilder.Entity<Profile>()
.HasRequired<ApplicationUser>(m => m.ApplicationUser);
奇怪的是,当我运行迁移时,它会在数据库中创建 ApplicationUserID 和 ApplicationUser_Id ,而我想要的只是创建 ApplicationUserID 并将其用作外键列。如果我添加属性 AppliationUser_Id 它将添加 ApplicationUser_Id1。有人知道怎么修这个东西吗?
我想确保外键位于配置文件表上,即配置文件具有 ApplicationUserID 列,反之亦然,即我不希望 AspNetUsers 表具有 profile_ID 列。
附:我使用 Fluent API,而不是数据注释。
如果要配置一对一关系,实体框架要求依赖项的主键必须用作外键。
public class Profile
{
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
现在,关于 FK 约定,由于该限制,由于没有选择,Code First 只会为您推断 FK。
另一件事是,使用 Fluent Api 配置一对一关系的正确方法是:
modelBuilder.Entity<Profile>()
.HasRequired<ApplicationUser>(m => m.ApplicationUser)
.WithOptional(a=>a.Profile);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)