2016-07-30 16 views
7

tôi cố gắng bao gồm loại vô danh như thế này: Tôi muốn tất cả các thuộc tính incomelist ngoài CompanyTitle, PeriodTypeName)Các Bao gồm biểu thức đường dẫn phải đề cập đến một bất động sản chuyển hướng xác định trên type.in háo hức tải

var incomeList = ctx.IncomeLists.Include(i => new 
       { 
        CompanyTitle = i.CompanyId.ToString() + "/" + i.Company.CompanyName, 
        PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName) 
       }).ToList() 

phần mô hình của tôi như thế này: enter image description here

nhưng tôi nhận được ngoại lệ sau đây:

Biểu thức đường dẫn Bao gồm phải tham chiếu đến thuộc tính điều hướng được xác định trên loại. Sử dụng các đường chấm chấm để điều hướng tham chiếu thuộc tính và toán tử Chọn cho điều hướng thu thập thuộc tính. Tên thông số: đường dẫn

Kết quả sẽ là nguồn dữ liệu cho Gridview.

+0

việc kiểm tra này https://msdn.microsoft.com/en-us/library/bb738708(v=vs.110).aspx –

+0

bạn không thể bao gồm một đối tượng. bạn thực sự phải bao gồm Thuộc tính điều hướng. Nếu bạn muốn bao gồm hai thuộc tính, hãy làm điều đó với Include(). Include(). – DevilSuichiro

Trả lời

9

Bạn không thể sử dụng Bao gồm để chọn dữ liệu như thế này. Bao gồm được sử dụng để tải dữ liệu liên quan. Bạn nên tải các thực thể của mình bằng cách sử dụng Bao gồm rồi chọn những gì bạn muốn. Hãy nhớ xóa .ToString() từ CompanyId. EF sẽ làm điều đó cho bạn. truy vấn của bạn sẽ trông như thế này:

var incomeList = ctx.IncomeLists 
    .Include(i => i.Company) 
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType)) 
    .Select(i => new 
    { 
     CompanyTitle = i.CompanyId + "/" + i.Company.CompanyName, 
     PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName) 
    }) 
    .ToList(); 
Các vấn đề liên quan