2016-08-25 4 views
4

J'ai configuré ma base de données EF-code first mais je souhaite ajouter des propriétés dérivées supplémentaires. (Oui, il devrait être dans un modèle de vue, nous pouvons discuter une autre fois pourquoi il est de cette façon.) J'ai créé une classe partielle qui étend la classe réelle de la table. Si j'ajoute un [NotMapped] au nouveau partiel, évitera-t-il de mapper les propriétés supplémentaires que j'ajouterai ou s'appliquera-t-il à toute la classe?L'ajout de [NotMapped] à une classe partielle évite-t-il de mapper la classe entière?

Répondre

6

Cela s'appliquera à toute la classe. Rappelez-vous qu'une classe partielle est simplement un moyen de diviser une classe en plusieurs fichiers. De l'official docs:

Au moment de la compilation, les attributs des définitions de type partiel sont fusionnées.

donc ceci:

[SomeAttribute] 
partial class PartialEntity 
{ 
    public string Title { get; set; } 
} 

[AnotherAttribute] 
partial class PartialEntity 
{ 
    public string Name { get; set; } 
} 

équivaut à écrire:

[SomeAttribute] 
[AnotherAttribute] 
partial class PartialEntity 
{ 
    public string Title { get; set; } 
    public string Name { get; set; } 
} 

Si vous souhaitez ajouter une classe partielle sans avoir les propriétés incluses dans le modèle, vous devrez ajouter l'attribut NotMapped aux différents éléments:

partial class PartialEntity 
{ 
    public string Title { get; set; } 
} 

partial class PartialEntity 
{ 
    [NotMapped] 
    public string Name { get; set; } 
}