2013-05-31 6 views
0

J'essaie de comprendre, comment mettre en œuvre des propriétés de navigation à mes entités ... Mais mes propriétés de navigation est toujours nulle:EF CodeFirst - Ajout ICollection Navigation Propriétés

J'ai mis en place deux entités:

entité 1 contient ces lignes:

public int Id { get; set; } 
    public ICollection<BestellterArtikel> BestellteArtikel { get; set; } 

Ma deuxième entité se présente comme suit:

public int Id { get; set; } 
    public int BestellungId { get; set; } 
    public Bestellung BestellteArtikel { get; set; } 

De plus, je compris cette ligne à mon OnModelCreating-Méthode remplacé:

modelBuilder.Entity<Bestellung>().HasMany(e => e.BestellteArtikel).WithRequired(e => e.Bestellung); 

Qu'est-ce que je fait de mal? Ai-je oublié quelque chose d'important? Et doit-il être si complexe? Dois-je ajouter une ligne dans ma méthode écrasée pour chaque propriété?

Répondre

1

Voici ma solution:

Entité 1:

public virtual ICollection<BestellterArtikel> BestellteArtikel { get; set; } 

Entité 2:

public virtual Bestellung BestellteArtikel { get; set; } 

Modifié:

aussi vous devez réviser votre cartographie:

modelBuilder.Entity<Bestellung>().HasMany(e => e.BestellteArtikel).WithRequired(e => e.BestellteArtikel); 

Au lieu de faire référence à la propriété BestellteArtikel, vous avez fait référence au type!

+0

Quel nom? Si vous voulez dire "virtuel", il s'agit d'un mot clé C#, et l'utiliser dans les modèles EF signifie charger paresseux les références. –

+0

Attendez! il y a quelque chose qui ne va pas dans votre cartographie. J'ai édité ma réponse –

+0

Non, vous ne m'avez pas compris correctement: j'ai une entité appelée BestellterArtikel (prendre soin de la R!) Avec la propriété "Bestellung" et une entité Bestellung avec l'ICollection "BestellteArtikel" (sans le R!). Je ne peux pas renommer ces propriétés comme vous l'avez fait dans votre code ...;) – Jannik

1

Qu'entendez-vous par "toujours null"?
Si vous parlez de valeurs nulles lorsque vous essayez de les lire depuis DB,
, souvenez-vous que vous devez charger les propriétés de navigation avec impatience lorsque vous interrogez le contexte, ou utilisez EF paresseux-chargement. Pour plus d'informations, consultez this.

+0

Lorsque je demande ma première entité avec Find (1) (j'ai créé quelques exemples d'entités dans la base de données avant de demander) et déplacez ma souris sur la navigation propriété "BestellteArtikel", son null et je ne peux pas l'étendre (peu importe si paresseux ou ardemment chargement), bien que j'ai 2-3 entites qui devrait être là. – Jannik

+0

var bestellung = db.AlleBestellungen.FirstOrDefault (p => p.Id == 1); C'est ce que j'essaie de faire (en utilisant le mot-clé virtuel) – Jannik

+0

Donc, lisez mon lien et ajoutez '.Include (" ") à votre requête – Liel

Questions connexes