EF7 Relations individuelles

c# entity-framework-core

Question

Je suis actuellement en train de maîtriser le nouvel EF7 et je rencontre un comportement étrange lorsque je traite avec une personne.

J'ai les modèles suivants

public class Material
{
    [Key]
    [Required]
    [Column(TypeName = "bigint")]
    public long Id { get; set; }

    [Required]
    [MaxLength(128)]
    public string Name { get; set; }

    [Required]
    [MaxLength(512)]
    public string Description { get; set; }

    [Required]
    [Column(TypeName = "money")]
    public decimal CostPerUnit { get; set; }

    public virtual Unit UnitOfMeasure { get; set; }

    [Required]
    [Column(TypeName = "bit")]
    public bool IsActive { get; set; } = false;
}


public class Unit
{
    [Key]
    [Column(TypeName = "bigint")]
    public long Id { get; set; }

    [Required]
    [MaxLength(32)]
    public string Name { get; set; }

    [Required]
    [MaxLength(64)]
    public string Description { get; set; }

    [Required]
    public string Type { get; set; }
}

et je construis les tables comme suit:

 builder.Entity<Unit>().Key(u => u.Id);
builder.Entity<Unit>().Property(u => u.Name).MaxLength(64).Required();
builder.Entity<Unit>().Property(u => u.Description).Required();
builder.Entity<Unit>().Property(u => u.Type).Required();

builder.Entity<Material>().Key(m => m.Id);
builder.Entity<Material>().Property(m => m.Name).Required();
builder.Entity<Material>().Property(m => m.Description).Required();
builder.Entity<Material>().Property(m => m.CostPerUnit).Required();
builder.Entity<Material>().Property(m => m.IsActive).Required();

Le problème que je rencontre est maintenant que lorsque j'essaie de rechercher un matériau avec une unité de mesure, l'unité de mesure est toujours définie sur null, mais lorsque je vérifie les tables générées, je vois clairement que la clé étrangère est effectivement créé.

J'ai également tenté de forcer la relation dans la création de OnModel, mais je ne parviens toujours pas à récupérer l'objet unité.

builder.Entity<Material>().Reference(m => m.UnitOfMeasure).InverseReference().ForeignKey<Unit>(u => 

Comment devrais-je ajouter cette référence ou est-ce encore pris en charge?

Réponse acceptée

Comment essayez-vous d'obtenir la référence? Le chargement différé à ce stade ne fonctionne pas dans EF7. Vous devrez faire un chargement rapide (dbContext.Materials.Include (m => m.UnitOfMeasure)) ou la version explicite de cela



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi