EF代码优先:从中央多对多关系表中删除多余的外键

时间:2018-07-17 08:27:05

标签: c# entity-framework many-to-many

我有一个中央表来处理翻译,许多实体可能都有翻译的集合。我首先使用EF 6.0代码。 为避免每个实体EF在转换表中生成外键,为避免这种情况,我决定添加3列:TableName,ColumnName和EntityKey指向给定的表。

public class CurrencyModel
{
  // more staff here 
  public ICollection<TranslationModel> Translations {get; set; }
}
public class CityModel
{
  // more staff here 
  public ICollection<TranslationModel> Translations {get; set; }
}

public class CountryModel
{
  // more staff here 
  public ICollection<TranslationModel> Translations {get; set; }
}

public class CategoryModel
{
  // more staff here 
  public ICollection<TranslationModel> Translations {get; set; }
}

如何强制EF不要为每个表生成外键? 预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在创建和添加迁移后以及更新数据库之前,您应该使用流利的api,转到DbContext类并检查OnModelCreating方法,在此方法中,您可以在某些方法上看到.HasForeignKey(e => e ....)您的实体.. 您可以在OnModelCreating方法中覆盖EF约定,并强制它例如不为每个表生成外键。