2012-10-14 23 views
7

EF tự động tạo ra các lớp DbContext từ tập tin edmx tôi (cơ sở dữ liệu đầu tiên) và sử dụng các tên bảng như tên mặc định cho tất cả các thuộc tính DbContext này (ví dụ: public DbSet<Student> student { get; set; })Làm thế nào để tùy chỉnh tên thuộc tính DbContext trong Entity Framework và ngừng bị ghi đè?

Nếu tôi thực hiện một số thay đổi trong tập tin này (ví dụ: như đổi tên thuộc tính tên từ sinh viên thành sinh viên), thay đổi của tôi bị mất mỗi khi tôi lưu mô hình của mình vì EF tạo lại tệp lớp DbContext.

Làm cách nào để thay đổi hành vi mặc định này và có thể thực hiện tùy chỉnh của tôi và ngừng làm mất nó?

Trả lời

6

Để xây dựng trên những gì Pawel nói .. Các tập tin EDMX (nhà thiết kế) là nguồn gốc của tất cả mọi thứ. Bất kỳ thay đổi nào bạn cần thực hiện đối với các mục được tạo sẽ được thực hiện ở đó. Bạn có thể thêm các phương thức hoặc thuộc tính bổ sung thông qua các lớp một phần, nhưng bạn không thể thay đổi các lớp hiện có. Vì vậy, nó phải được thay đổi trong tệp EDMX nguồn.

Chỉ cần nhấp chuột phải vào Bảng trong trình thiết kế và đổi tên nó. Điều này không thay đổi tên bảng cơ bản (ít nhất là trong cơ sở dữ liệu đảo ngược đầu tiên, mô hình đầu tiên là một câu chuyện khác).

+0

Ok đối với tên bảng nhưng còn về tên phương thức trong lớp Đối tượng thừa kế từ DbContext thì sao? (Trong MyDataModel.Context.cs) –

+0

@Etienne - Tên phương thức nào? Poco được gọi là Poco vì một lý do. Họ không có phương pháp. –

+0

Mẫu T4 cho tôi một MyDataModel.Context.tt chứa MyDataModel.Context.cs. Bên trong cái cuối cùng này, chúng ta có định nghĩa về các thực thể lớp công khai: DbContext chứa danh sách tất cả các phương thức (ví dụ: public DbSet student {get; set;}). Bên trong kho của tôi, sau khi đã khởi tạo lớp thực thể này (ví dụ: bối cảnh thực thể riêng tư;) Tôi có thể truy cập mô hình của mình bằng cách sử dụng context.student ... Tôi muốn truy cập nó bằng cách sử dụng context.Students ... Xin lỗi vì không thể rõ ràng ... –

1

Bạn cần phải thay đổi nó trong file EDMX - bạn sẽ có thể làm điều đó với các nhà thiết kế EF

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