내 이해는 [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.3
NuGet을 사용할 때 사용할 수있는 최신 안정 버전입니다.
편집 : 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
네임 스페이스 를 포함해야 합니다.