2013-02-20 31 views
5

Ok, do đó, theo this page, Khung thực thể sẽ háo hức tải nhiều cấp độ bằng cách sử dụng Select trong phương thức Include.Entity Framework Eager Đang tải nhiều cấp độ Ngoại lệ

Tôi có đoạn mã sau:

var reports = _context.Reports 
    .Include(rt => rt.Fields) 
    .Include(rt => rt.Fields.Select(f => f.FieldType)) 
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier)); 

Tuy nhiên, điều này ném một InvalidOperationException - "loại không hợp lệ của khái niệm" về cuộc gọi đến thứ hai bao gồm. Ngoại lệ đến từ EntityFrameworkHelper.CollectRelationalMemebers.

Tôi cũng đã thử sử dụng các chuỗi để Include các thuộc tính liên quan, nhưng cũng không thành công (tôi muốn tránh sử dụng các chuỗi nếu có thể).

Tôi đang sử dụng EF 5.0 DLL cho .NET 4.0. Các lớp học EF của tôi là cơ sở dữ liệu kiểu cũ EntityObject s đầu tiên.

Có ai biết nguyên nhân và nếu có bất kỳ điều gì tôi có thể làm về ngoại lệ này không?

EDIT:

Khi sử dụng phiên bản chuỗi:

var reports = _context.Reports 
    .Include("Fields") 
    .Include("Fields.FieldType") 
    .Include("Fields.FieldType.FieldIdentifier")); 

Nó ném InvalidOperationException - loại không hợp lệ của Expression.

+0

Thông báo ngoại lệ chính xác khi bạn sử dụng phiên bản dựa trên chuỗi của 'Bao gồm' là gì? – Slauma

+0

Xem câu trả lời ở trên. – MgSam

+0

Tôi có nghĩa là ngoại lệ cho phiên bản ** Chuỗi ** dựa trên 'Bao gồm'. – Slauma

Trả lời

0

Vấn đề kết thúc lên được rằng một bữa tiệc Include phương pháp mở rộng lần thứ 3 trong một DLL chúng tôi đã được sử dụng là nhận được ưu tiên hơn Include Khung của Entity. Bên thứ ba đã ném các ngoại lệ. Sau khi gỡ bỏ nó vấn đề được giải quyết.

Một trong những vấn đề với phương pháp mở rộng ...

Cảm ơn sự giúp đỡ của mọi người.

19

Bạn có bao gồm dự phòng. Bạn chỉ cần bao gồm cuối cùng, trong đó sẽ bao gồm bất cứ điều gì trong con đường đó. Ví dụ:

var reports = _context.Reports 
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier)); 
Các vấn đề liên quan