2011-12-09 27 views
6

Tôi có một lớp:Cách lập bản đồ tài sản như KHÔNG một cột trong EF 4.1

public class classParty 
{ 
    private int _arrivedCount; 

    public int PartyID {get; private set;} 
    public DateTime PartyDate {get; private set;} 
    public int ArrivedCount 
    { 
     get 
     { 
      return _arrivedCount; 
     } 

     set 
     { 
      _arrivedCount = value; 
     } 
    } 
} 

tôi có thể lập bản đồ PartyId và PartyDate nhưng tôi không có một cột cho ArrivedCount (đó là một khoảnh khắc trong thời gian đếm, nó không tồn tại).

Làm cách nào để yêu cầu EF 4.1 ngừng tìm kiếm cột có tên "ArrivedCount"? Nó không có trong bảng. Nó sẽ không nằm trong bàn. Nó chỉ đơn giản là một tài sản của đối tượng và đó là tất cả.

Xin cảm ơn trước.

EDIT: Đây là cấu hình API lưu loát cho classParty.

public class PartyConfiguration : EntityTypeConfiguration<classParty> 
{ 
    public PartyConfiguration() 
     : base() 
    { 
     HasKey(p => p.PartyID); 

     Property(p => p.PartyID) 
      .HasColumnName("PartyID") 
      .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity) 
      .IsRequired(); 
     Property(p => p.PartyDate) 
      .HasColumnName("PartyDate") 
      .IsRequired(); 

     ToTable("Party"); 
    } 
} 

Trả lời

8
modelBuilder.Entity<classParty>().Ignore(x => x.ArrivedCount); 
+0

Yep, đó là nó. Có một dòng mã để thêm vào lớp EntityTypeConfiguration không? Tôi muốn tất cả các ánh xạ (và "unmappings") được ở một nơi. Nhưng nếu không, điều này hoạt động tốt. –

+1

@TomPadilla: Chỉ sử dụng 'Bỏ qua (x => x.ArrivedCount);' trong hàm tạo 'PartyConfiguration' của bạn. – Slauma

14

Với chú thích dữ liệu:

[NotMapped] 
public int ArrivedCount 
//... 

Hoặc sử dụng API thạo:

modelBuilder.Entity<classParty>() 
    .Ignore(c => c.ArrivedCount); 
Các vấn đề liên quan