1
首先使用代码,我有一些抽象类和从这些抽象类派生的一些类。实体框架创建抽象表和派生表之间不需要的关系
// 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是Brands.BrandId的FK,因此在删除Bran时发生错误d记录。如果我删除ComparisonModel.BrandId> ComparisonBrand.Id关系,但是,删除工作正常。
如何避免抽象表与派生表(Brands and ComparisonBrand)之间形成关系?