c# - tpt - Ignorando uma propriedade de classe no Entity Framework 4.1 Code First




tpt code first (2)

A partir do EF 5.0, você precisa incluir o namespace System.ComponentModel.DataAnnotations.Schema .

https://code.i-harness.com

Meu entendimento é que o atributo [NotMapped] não está disponível até o EF 5 que está atualmente no CTP, então não podemos usá-lo na produção.

Como posso marcar propriedades no EF 4.1 para serem ignoradas?

UPDATE: notei algo mais estranho. Eu tenho o atributo [NotMapped] para funcionar, mas por algum motivo, o EF 4.1 ainda cria uma coluna chamada Disposed no banco de dados, mesmo que o public bool Disposed { get; private set; } public bool Disposed { get; private set; } public bool Disposed { get; private set; } está marcado com [NotMapped] . A classe implementa IDisposeable claro, mas não vejo como isso deve importar. Alguma ideia?


Você pode usar a anotação de dados de atributo NotMapped para instruir Code-First para excluir uma propriedade específica

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] atributo [NotMapped] está incluído no namespace System.ComponentModel.DataAnnotations .

Como alternativa, você pode fazer isso com a Fluent API substituindo a função OnModelCreating em sua classe 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

A versão que eu verifiquei é o EF 4.3 , que é a última versão estável disponível quando você usa o NuGet.

Edit : setembro de 2017

Asp.NET Core (2.0)

Anotação de dados

Se você estiver usando o asp.net core ( 2.0 no momento em que este texto foi escrito ), o atributo [NotMapped] pode ser usado no nível da propriedade.

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 fluente

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






entity-framework-4.1