Entity Framework 创建不需要的外键列
Entity Framework creates undesired foreign key column
我正在使用 Entity Framework Code First 方法。我有这些 类。当然,他们还有其他领域,但与问题无关。
public class User
{
public int Id { get; set; }
public Role Role { get; set; }
public int HouseholdId { get; set; }
public virtual Household Household { get; set; }
}
public class Household
{
private ICollection<User> users;
public Household()
{
users = new HashSet<User>();
}
public int Id { get; set; }
public DateTime DateCreated { get; set; }
public virtual ICollection<User> Users
{
get { return users; }
set { users = value; }
}
}
我在我的 OnModelCreating 方法中应用了以下设置:
modelBuilder.Entity<User>()
.HasRequired(u => u.Household)
.WithMany()
.WillCascadeOnDelete(false);
当我 运行 应用程序时,除了生成的用户 table 在其设计中添加了一个外键之外,一切都是正确的:
用户Table:
Id
Role
HouseholdId
**Household_Id**
为什么会这样?
只需从您的代码中删除:
modelBuilder.Entity<User>()
.HasRequired(u => u.Household)
.WithMany()
.WillCascadeOnDelete(false);
编辑:
如果您需要 WillCascadeOnDelete(false)
并且无法删除此代码,请尝试以下操作:
modelBuilder.Entity<User>()
.HasRequired(u => u.Household)
.WithMany(t => t.Users)
.WillCascadeOnDelete(false);
我正在使用 Entity Framework Code First 方法。我有这些 类。当然,他们还有其他领域,但与问题无关。
public class User
{
public int Id { get; set; }
public Role Role { get; set; }
public int HouseholdId { get; set; }
public virtual Household Household { get; set; }
}
public class Household
{
private ICollection<User> users;
public Household()
{
users = new HashSet<User>();
}
public int Id { get; set; }
public DateTime DateCreated { get; set; }
public virtual ICollection<User> Users
{
get { return users; }
set { users = value; }
}
}
我在我的 OnModelCreating 方法中应用了以下设置:
modelBuilder.Entity<User>()
.HasRequired(u => u.Household)
.WithMany()
.WillCascadeOnDelete(false);
当我 运行 应用程序时,除了生成的用户 table 在其设计中添加了一个外键之外,一切都是正确的:
用户Table:
Id
Role
HouseholdId
**Household_Id**
为什么会这样?
只需从您的代码中删除:
modelBuilder.Entity<User>()
.HasRequired(u => u.Household)
.WithMany()
.WillCascadeOnDelete(false);
编辑:
如果您需要 WillCascadeOnDelete(false)
并且无法删除此代码,请尝试以下操作:
modelBuilder.Entity<User>()
.HasRequired(u => u.Household)
.WithMany(t => t.Users)
.WillCascadeOnDelete(false);