0

J'ai un objet Product avec une Catégorie associée à l'intérieur.Code EF Premier CTP5 Null enfant Gestion des objets

J'ai la relation entre le produit et la catégorie comme un à plusieurs. Mais la catégorie peut aussi être nulle.

Problème, c'est que je n'arrive pas à gérer les objets de catégorie null.

J'ai essayé ce qui suit dans ma classe de produit:

private Category _category; 

public virtual Category Category 
{ 
    get { return _category ?? (_category = new Category()); } 

    set { _category = value; } 
} 

Et sur mon contexte de base de données OnModelCreating méthode:

modelBuilder.Entity<Product>() 
       .HasRequired(p => p.Category) 
       .WithMany(c => c.Products) 
       .HasForeignKey(p => p.CategoryId); 

Malheureusement sur l'accès au Product.Category dans ma couche de conception, il revient toujours Nouvelle instance de catégorie, plutôt que d'essayer d'extraire la catégorie par l'argument Product.CategoryId (dont a la valeur).

Comment puis-je configurer mon modèle pour gérer la catégorie null?

+0

Le modèle ne peut pas être le meilleur endroit pour cela. Je recommanderais de créer une classe partielle et de la manipuler là. Y a-t-il une raison pour laquelle vous devez le gérer dans votre modèle? – lukiffer

+0

Mais je le manipule dans une classe (la classe de produit), bien que oui, c'est le modèle ... Suggérez-vous d'ajouter une autre couche entre ma couche de conception et le modèle pour vérifier les valeurs nulles? – bananaFly

+0

Btw. savez-vous que CTP5 est une version obsolète? La version actuelle est EF 4.1 RC. –

Répondre

0

Si le Category est en option (il est parce qu'il peut être nul), vous devez utiliser:

modelBuilder.Entity() .HasOptional (p => p.Category) .WithMany (c => c .Produits) .HasForeignKey (p => p.CategoryId);

Et définir votre produit:

public class Product 
{ 
    ... 
    public int? CategoryId { get; set; } 
    public virtual Category { get; set; } 
} 
Questions connexes