实体框架在抽象表和派生表之间创建不需要的关系
本文关键字:创建 不需要 关系 之间 框架 抽象 实体 派生 | 更新日期: 2023-09-27 18:02:24
首先使用代码,我有一些抽象类和从这些抽象类派生的一些类。
// 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。branddid>品牌。Id
- ComparisonModel。品牌>比较品牌。Id
。Id是品牌的FK。BrandId,我在删除Brand记录时得到一个错误。如果我删除ComparisonModel。品牌>比较品牌。然而,Id关系,删除工作正常。
如何防止在抽象表和派生表(Brands和ComparisonBrand)之间形成关系?
您正在使用虚拟关键字,这会导致延迟加载。您告诉EF通过此功能为它们生成外键。删除虚拟,您将不再创建键