Используя код во-первых, у меня есть некоторые абстрактные классы и некоторые классы, полученные из этих абстрактных классов.Entity Framework Создает нежелательные отношения между абстрактными и производными таблицами
// Abstracted Classes
public abstract class Brand
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
public abstract class Model
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
}
// Derived Classes
[Table("ComparisonBrand")]
public class ComparisonBrand : Brand
{
public ComparisonBrand()
{
ComparisonValues = new List<ComparisonValue>();
Models = new List<ComparisonModel>();
}
public virtual ICollection<ComparisonValue> ComparisonValues { get; set; }
public virtual ICollection<ComparisonModel> Models { get; set; }
}
[Table("ComparisonModel")]
public class ComparisonModel : Model
{
public int? BrandId { get; set; }
public int? LogoId { get; set; }
[ForeignKey("BrandId")]
public virtual ComparisonBrand ComparisonBrand { get; set; }
[ForeignKey("LogoId")]
public virtual ComparisonLogo ComparisonBrand { get; set; }
public virtual ICollection<ComparisonValue> ComparisonValues { get; set; }
}
Моя проблема заключается в том, что миграция создает внешние ключи для:
- ComparisonModel.Id> Models.Id
- ComparisonModel.BrandId> Brands.Id
- ComparisonModel.BrandId> ComparisonBrand. Id
Поскольку ComparisonBrand.Id является FK для Brands.BrandId, я получаю сообщение об ошибке при удалении отруба d запись. Однако, если я удалю сравнение ComparisonModel.BrandId> ComparisonBrand.Id, удаление будет прекрасным.
Как я могу предотвратить формирование отношений между как абстрактной таблицей, так и производной таблицей (Brands and ComparisonBrand)?