0

J'ai actuellement 3 entités dans mon modèle Item, RegistroItem et ItemTienda: RegistroItem est hérité de Item et ItemTienda a un - to-many relation avec Item. J'ai configuré la RegistrosItems Table en utilisant l'API Fluent comme ceci:L'entité B héritée de l'entité A (utilisant MapInheritedProperties) interrompt la relation entre A et C - Entity Framework Code First

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

Le problème est que dès que je mets ce code, mon arrêt Entité ItemTienda suivi de la relation avec l'article et le code d'abord ne pas ajouter la règle clé Etrangère à la table SQL ItemsTiendas. J'ai essayé beaucoup de choses mais aucune d'entre elles ne fonctionne, Avez-vous une idée de ce qui pourrait être le problème? Ce sont la définition des entités:

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; } 
} 

Répondre

0

À mon avis, vous devriez rendre cette variable "virtuelle".

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; } 
}