[C#] Entity Framework 4.1 코드에서 클래스 속성 무시하기

내 이해는 [NotMapped]현재 CTP에있는 EF 5까지는 속성을 사용할 수 없으므로 프로덕션에서 사용할 수 없다는 것입니다.

EF 4.1에서 속성을 무시하도록 표시하려면 어떻게해야합니까?

업데이트 : 나는 다른 이상한 것을 알았습니다. 내가 가지고 [NotMapped]작업에 속성을하지만, 어떤 이유로, EF 4.1은 여전히이 경우에도 데이터베이스에 배치이라는 이름의 열 생성 public bool Disposed { get; private set; }으로 표시됩니다 [NotMapped]. IDisposeable물론 클래스는 구현 하지만 그것이 어떻게 중요한지 모르겠습니다. 이견있는 사람?



답변

NotMapped속성 데이터 주석을 사용하여 특정 속성을 제외하도록 Code-First에 지시 할 수 있습니다.

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]속성은 System.ComponentModel.DataAnnotations네임 스페이스에 포함됩니다 .

또는 클래스 에서 Fluent API재정의 OnModelCreating함수를 사용하여 이를 수행 할 수 있습니다 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

내가 확인 한 버전은 EF 4.3NuGet을 사용할 때 사용할 수있는 최신 안정 버전입니다.


편집 : 2017 년 9 월

ASP.NET 코어 (2.0)

데이터 주석

asp.net 코어 ( 이 문서 작성 당시 2.0 )를 [NotMapped]사용하는 경우 속성을 속성 수준에서 사용할 수 있습니다.

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

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


답변

EF 5.0부터 System.ComponentModel.DataAnnotations.Schema네임 스페이스 를 포함해야 합니다.


답변