2015-03-31 36 views
5

Tôi đã thử nghiệm các bảng khác trong mô hình và chúng đang hoạt động. Tuy nhiên, tôi đã thêm hai bảng mới và chúng không có trong mô hình.Loại thực thể <T> không phải là một phần của mô hình cho ngữ cảnh hiện tại

Làm cách nào để đảm bảo rằng bảng cơ sở dữ liệu là một phần của mô hình?

OnModelCreating KHÔNG được gọi trong mã này. enter image description here

The entity type AppToLeadRequestLine is not part of the model for the current context. 

Ngoại lệ này được ném khi thêm mục vào bảng.

public void Add<T>(T obj) where T : class 
{ 
    Set<T>().Add(obj); 
} 

Tôi đã thêm cả hai bảng này vào cơ sở dữ liệu.

enter image description here

Sau khi thêm hai bảng cơ sở dữ liệu tôi tạo ra chúng trong các mô hình bằng cách sử dụng Update Model from Database, và cả hai bảng xuất hiện trong mô hình. enter image description here

Khi tôi nhìn vào ánh xạ bảng, chúng dường như được ánh xạ tới POCO chính xác. Tôi không chắc chắn 100% về điều này.

enter image description here enter image description here

Các lớp trông như thế này: enter image description here enter image description here

+0

Lỗi đó có thể có nghĩa là một vài điều. Bạn có thể xác minh các bảng khác của bạn đang hoạt động chính xác không và chỉ có một hoặc hai bảng đó là không? – Jonesopolis

+0

Tôi đã thử nghiệm các bảng khác và chúng đang hoạt động. Chỉ có hai bảng mới mà tôi đã thêm có vấn đề này. –

+0

Làm thế nào 'LeadDeliveryTimes' có thể là' TimeSpan' trong mô hình lớp, trong khi nó hiển thị 'bigint/Int64' trong ánh xạ? –

Trả lời

1

OnModelCreating không được gọi là - như bạn chỉ ra - vì vậy tôi có thể chắc chắn rằng bạn đang sử dụng một mô hình thứ nhất cách tiếp cận (và không phải Mã-Đầu tiên). Trong trường hợp này, bạn chịu trách nhiệm cho tất cả của ánh xạ. Here is a good article on the topic.

Có vẻ như RequestId là khóa ngoài đối với lớp AppToLeadRequest - nếu đúng như vậy, bạn phải tự khai báo các câu hỏi public virtual trong cả hai lớp.

Ví dụ - ở dưới cùng của lớp AppToLeadRequest, nó nên chứa:

public virtual ICollection<AppToLeadRequestLine> AppToLeadRequestLines { get; set; }

và, ở dưới cùng của lớp AppToLeadRequestLine, nó nên chứa:

public virtual AppToLeadRequest AppToLeadRequest { get; set; }

Tôi cũng sẽ thay đổi RequestId thành AppToLeadRequestId để làm theo định dạng <class name>Id.

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