Ignorar una propiedad de clase en Entity Framework 4.1 Code First

[NotMapped] atributo [NotMapped] no está disponible hasta EF 5, que actualmente está en CTP, por lo que no podemos utilizarlo en producción.

¿Cómo puedo marcar las propiedades en EF 4.1 para ignorarlas?

ACTUALIZACIÓN: noté algo extraño. [NotMapped] atributo [NotMapped] para que funcione, pero por alguna razón, EF 4.1 todavía crea una columna llamada Disposed en la base de datos, aunque el public bool Disposed { get; private set; } public bool Disposed { get; private set; } public bool Disposed { get; private set; } está marcado con [NotMapped] . La clase implementa IDisposeable por supuesto, pero no veo cómo eso debería importar. ¿Alguna idea?

Puede usar la anotación de datos de atributos NotMapped para indicar a Code-First que excluya una propiedad en particular.

 public class Customer { public int CustomerID { set; get; } public string FirstName { set; get; } public string LastName{ set; get; } [NotMapped] public int Age { set; get; } } 

[NotMapped] se incluye en el espacio de nombres System.ComponentModel.DataAnnotations .

Alternativamente, puede hacer esto con la Fluent API OnModelCreating anulando la función OnModelCreating en su clase DBContext :

 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Ignore(t => t.LastName); base.OnModelCreating(modelBuilder); } 

http://msdn.microsoft.com/en-us/library/hh295847(v=vs.103).aspx

La versión que revisé es EF 4.3 , que es la última versión estable disponible cuando usa NuGet.


Edición : SEP 2017

Asp.NET Core (2.0)

Anotación de datos

Si está utilizando asp.net core ( 2.0 en el momento de escribir esto ), el atributo [NotMapped] se puede usar en el nivel de propiedad.

 public class Customer { public int Id { set; get; } public string FirstName { set; get; } public string LastName { set; get; } [NotMapped] public int FullName { set; get; } } 

Fluent API

 public class SchoolContext : DbContext { public SchoolContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity().Ignore(t => t.FullName); base.OnModelCreating(modelBuilder); } public DbSet Customers { get; set; } } 

A partir de EF 5.0, debe incluir el espacio de nombres System.ComponentModel.DataAnnotations.Schema .