0

我的模型 Item、RegistroItem 和 ItemTienda 目前有 3 个实体:RegistroItem 是从 Item 继承的,而 ItemTienda 与 Item 具有一对多的关系。我使用 Fluent API 配置了 RegistrosItems 表,如下所示:

protected override void OnModelCreating(DbModelBuilder MB) {
    MB.Entity<Item>().Map(m => { m.ToTable("Items"); })
        .Map<RegistroItem>(m => {
            m.ToTable("RegistroItems");
            m.MapInheritedProperties(); 
        });

问题是,只要我输入该代码,我的实体 ItemTienda 就会停止跟踪与 Item 的关系,并且 Code First 不会将 Foreing 键规则添加到 SQL 表 ItemsTiendas。我已经尝试了很多东西,但都没有工作,你知道可能是什么问题吗?这是实体的定义:

public class Item : IRegistrable { 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public EstadoRegistrable Estado { get; set; }
    public int ProductoID { get; set; }
    [ForeignKey("ProductoID")]
    public Producto ProductoObj { get; set; }
    [Required] [MaxLength(30)]
    public string Marca { get; set; }
    [ForeignKey("Marca")]
    public Marca MarcaObj { get; set; }
    [DecimalPrecision(9,3)]
    public decimal Tamaño { get; set; }
    [MaxLength(100)]
    public string Complemento { get; set; }
    [MaxLength(500)]
    public string Descripción { get; set; }
}

[Semilla(-2147483648)]
public class RegistroItem : Item, IRegistro {
    public int IDRegistrable { get; set; }
    public DateTime Modificado { get; set; }
    public int ModificadorID { get; set; }
    public AcciónRegistro Acción { get; set; }
    public FuenteDatos Fuente { get; set; }
    [MaxLength(1200)] 
    public string ValoresOriginales { get; set; }
}

 public class ItemTienda : IRegistrable { 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public EstadoRegistrable Estado { get; set; }
    public int TiendaID { get; set; }
    [ForeignKey("TiendaID")]
    public Tienda TiendaObj { get; set; }
    public int ItemID { get; set; }
    [ForeignKey("ItemID")]
    public Item ItemObj { get; set; }
    [StringLength(100)]
    public string DescripciónTirilla { get; set; }
    [StringLength(100)]
    public string DescripciónEstantería { get; set; }
    [StringLength(200)]
    public string DescripciónWeb { get; set; }
    [StringLength(20)]
    public string Código { get; set; }
    [DecimalPrecision(19, 4)]
    public decimal Precio { get; set; }
    public DateTime FechaPrecio { get; set; }
    public int? UbicaciónTiendaID { get; set; }
    [ForeignKey("UbicaciónTiendaID")]
    public UbicaciónTienda UbicaciónTiendaObj { get; set; }
    public Int16 SolicitudesRevisión { get; set; }
}
4

1 回答 1

0

在我看来,你应该使这个变量“虚拟”。

public class Item : IRegistrable { 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }
    public EstadoRegistrable Estado { get; set; }
    public int ProductoID { get; set; }
    [ForeignKey("ProductoID")]
    public virtual Producto ProductoObj { get; set; }
    [Required] [MaxLength(30)]
    public string Marca { get; set; }
    [ForeignKey("Marca")]
    public Marca MarcaObj { get; set; }
    [DecimalPrecision(9,3)]
    public decimal Tamaño { get; set; }
    [MaxLength(100)]
    public string Complemento { get; set; }
    [MaxLength(500)]
    public string Descripción { get; set; }
}
于 2017-08-01T04:37:30.437 回答