2011-01-17 28 views
39

Tôi đang sử dụng EF4 với CodeFirstchỉ định một tên khác cho bảng | tên cột trong EF4

public class People : DbContext 
{ 
    public DbSet<Human> Humans { get; set; } 
    public DbSet<Child> Children { get; set; } 
} 

Tại thời điểm này, EF sẽ tìm trong cơ sở dữ liệu cho bảng Human. Làm thế nào tôi có thể chỉ định cho nó để tìm kiếm Humans thay thế?

Trả lời

60

Bạn có thể thay đổi tên bảng trên Human lớp:

[Table("Humans")] 
public class Human 
{ 
    ... 
} 

cách khác là sử dụng API thạo:

modelBuilder.Entity<Human>() 
    .ToTable("Humans"); 

Tương tự bạn có thể sử dụng ColumnAttribute hoặc HasColumnName phương pháp để thay đổi tên của cột.

+0

Rất hữu ích! Tôi đã sửa những thứ này theo cách thủ công ở mỗi lần tạo di chuyển. –

+1

Tôi chỉ muốn lưu ý rằng Mô hình xây dựng chỉ được thực hiện cho trường hợp đầu tiên của lớp DbContext có nguồn gốc. Sau đó, nó được lưu trữ cho các trường hợp trong tương lai. Vì vậy, 'MyDbContext.OnModelCreating()' (trong đó cấu hình ngữ cảnh Fluent thường xảy ra) chỉ được gọi một lần trong ứng dụng của bạn. - Điều này ngăn cản có tên bảng thực sự năng động cho mỗi trường hợp của DbContext. - Tôi đang viết điều này vì tôi phát hiện ra một cách khó khăn. Có thể tiết kiệm một số nhức đầu cho ai đó :) – Riva

Các vấn đề liên quan