2009-11-10 3 views
19

Je voudrais savoir qu'il existe un moyen d'exclure certains champs de la base de données? Par exemple:Exclure un champ/propriété de la base de données avec Entity Framework 4 & Code-First

public class Employee 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string FatherName { get; set; } 

    public bool IsMale { get; set; } 
    public bool IsMarried { get; set; } 

    public string AddressAs { get; set; } 
} 

Comment puis-je exclure le champ AddressAs de la base de données?

+0

double possible de [Ignorer une propriété de classe dans Entity Framework 4.1 Code de Première] (http://stackoverflow.com/questions/10385248/ignoring-a-class-property-in-entity-framework-4-1-code-first) –

Répondre

20

Dans la version actuelle la seule façon d'exclure une propriété est de mapper explicitement toutes les autres colonnes:

builder.Entity<Employee>().MapSingleType(e => new { 
    e.Id, 
    e.Name, 
    e.FatherName, 
    e.IsMale, 
    e.IsMarried 
}); 

Parce que AddressAs n'est pas référencé, il ne fait pas partie de l'entité/base de données.

L'équipe EF envisage ajouter quelque chose comme ceci:

builder.Entity<Employee>().Exclude(e => e.AddressAs); 

Je vous suggère de dire laisser un commentaire sur le blog EFDesign, demandant cette fonction :)

Hope this helps

Alex

+3

Je me suis rendu compte que la seule façon de le faire à partir d'aujourd'hui est la façon dont vous l'avez mentionné. Je l'ai posté sur le blog EFDesign depuis longtemps: http://blogs.msdn.com/efdesign/archive/2009/10/12/code-only-further-enhancements.aspx – Yogesh

+0

Serait un vrai bonus s'ils ajoutent un ' .Exclude() ' – Zapnologica

+0

Existe-t-il un moyen d'exclure un champ particulier de toutes les classes d'un modèle en utilisant le modèle T4? –

30

Je sais que c'est une vieille question mais au cas où quelqu'un (comme moi) viendrait de searc h ...

Maintenant, il est possible dans l'infrastructure framework 4.3 de le faire. Vous le feriez comme ceci:

builder.Entity<Employee>().Ignore(e => e.AddressAs); 
+2

Ou dans VB 'builder.Entity (Of Employee) .Ignore (Fonction (e) e.AddressAs)' –

+3

Serait-ce global? Je veux dire, et si je veux le faire juste pour cet appel? Puis-je le rallumer, pour ainsi dire? – vbullinger

+0

Oui encore utile. vous venez de me sauver 40 minutes de recherche. –

Questions connexes