EF Code First Migrations 创建额外的外键
EF Code First Migrations creating extra foreign key
我正在尝试创建一个 Profile
table 以与 Asp.Net 身份 table 集成:AspNetUsers
。我在 EF 6.0 中使用代码优先迁移。
这是我的用户 class:
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; }
}
这是我的个人资料class:
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。有人知道如何解决这个问题吗?
我想确保外键在配置文件中 table 即配置文件有 ApplicationUserID 列,反之亦然,即我不想要 AspNetUsers table 有一个 profile_ID 列。
P.S。我使用的是 Fluent API,而不是数据注释。
如果要配置一对一关系,Entity Framework要求必须使用依赖的主键作为外键
public class Profile
{
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
现在,关于 FK 约定,由于该限制,由于别无选择,Code First 只会为您推断 FK。
另一件事是,使用 Fluent Api 配置 one-to-one 关系的正确方法是:
modelBuilder.Entity<Profile>()
.HasRequired<ApplicationUser>(m => m.ApplicationUser)
.WithOptional(a=>a.Profile);
我正在尝试创建一个 Profile
table 以与 Asp.Net 身份 table 集成:AspNetUsers
。我在 EF 6.0 中使用代码优先迁移。
这是我的用户 class:
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; }
}
这是我的个人资料class:
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。有人知道如何解决这个问题吗?
我想确保外键在配置文件中 table 即配置文件有 ApplicationUserID 列,反之亦然,即我不想要 AspNetUsers table 有一个 profile_ID 列。
P.S。我使用的是 Fluent API,而不是数据注释。
如果要配置一对一关系,Entity Framework要求必须使用依赖的主键作为外键
public class Profile
{
public string ApplicationUserID { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
}
现在,关于 FK 约定,由于该限制,由于别无选择,Code First 只会为您推断 FK。
另一件事是,使用 Fluent Api 配置 one-to-one 关系的正确方法是:
modelBuilder.Entity<Profile>()
.HasRequired<ApplicationUser>(m => m.ApplicationUser)
.WithOptional(a=>a.Profile);