2009-11-10 164 views
19

me gustaría saber que hay una manera de excluir algunos campos de la base de datos? Por ejemplo:Excluir un campo/propiedad de la base de datos con Entity Framework 4 y Code-Primera

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; } 
} 

¿Cómo puedo excluir el campo AddressAs de la base de datos?

+0

Posible duplicado de [Haciendo caso omiso de una propiedad de clase en Entity Framework 4.1 Código Primero] (http://stackoverflow.com/questions/10385248/ignoring-a-class-property-in-entity-framework-4-1-code-first) –

Respuesta

20

En la versión actual la única manera de excluir una propiedad es para asignar explícitamente todas las otras columnas:

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

Debido AddressAs no se hace referencia no es parte de la Entidad/Base de datos.

El equipo de EF está considerando añadir algo como esto:

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

le sugiero que diga dejar un comentario en el blog EFDesign, solicitando esta característica :)

espero que esto ayude

Alex

+3

me di cuenta de que la única manera de hacerlo a partir de hoy es la manera que usted ha mencionado. Lo publiqué en el blog de EFDesign hace mucho tiempo: http://blogs.msdn.com/efdesign/archive/2009/10/12/code-only-further-enhancements.aspx – Yogesh

+0

Sería una verdadera ventaja si añaden un ' .Exclude() ' – Zapnologica

+0

¿Hay alguna forma de excluir un campo en particular de todas las clases en un modelo que usa la plantilla T4? –

30

sé que esto es una cuestión de edad, pero en caso de que alguien (como yo) le viene de searc h ...

Ahora es posible con el marco de la entidad 4.3 para hacer esto. Que lo haría así:

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

O en VB 'builder.Entity (Of Employee) .Ignore (Function (e) e.AddressAs)' –

+3

¿Sería esto global? Quiero decir, ¿y si quiero hacerlo solo por esta llamada? ¿Puedo volver a encenderlo, por así decirlo? – vbullinger

+0

Sí todavía es útil. Me acabas de ahorrar 40 minutos de investigación. –

Cuestiones relacionadas