c# - property - entity framework not include
Ignorar una propiedad de clase en Entity Framework 4.1 Código primero (2)
Mi entendimiento es que el atributo [NotMapped]
no está disponible hasta EF 5, que actualmente está en CTP, por lo que no podemos usarlo en producción.
¿Cómo puedo marcar propiedades en EF 4.1 para ser ignorado?
ACTUALIZACIÓN: Noté algo más extraño. Conseguí que el atributo [NotMapped]
funcionara, pero por algún motivo, EF 4.1 aún crea una columna denominada 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 debería importar eso. ¿Alguna idea?
A partir de EF 5.0, debe incluir el espacio de nombres System.ComponentModel.DataAnnotations.Schema
.
Puede usar la anotación de datos del atributo 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 OnModelCreating
Fluent API
anulando la función OnModelCreating
en su clase DBContext
:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>().Ignore(t => t.LastName);
base.OnModelCreating(modelBuilder);
}
http://msdn.microsoft.com/en-us/library/hh295847(v=vs.103).aspx
La versión que verifiqué es EF 4.3
, que es la última versión estable disponible cuando usas 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 este artículo ), 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; }
}
API fluida
public class SchoolContext : DbContext
{
public SchoolContext(DbContextOptions<SchoolContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Customer>().Ignore(t => t.FullName);
base.OnModelCreating(modelBuilder);
}
public DbSet<Customer> Customers { get; set; }
}