8

Bao gồm không hoạt động sau khi tôi thực hiện lựa chọn trên truy vấn IQueryable. Có cách nào mắc kẹt không? truy vấn của tôi làNếu tôi chọn từ một IQueryable thì Bao gồm bị mất

public IQueryable<Network> GetAllNetworks() 
{ 
    var query = (from n in _db.NetworkSet 
       .Include("NetworkContacts.Contact") 
       .Include("NetworkContacts.Contact.RelationshipSource.Target") 
       .Include("NetworkContacts.Contact.RelationshipSource.Source") 
       select (n));   
    return query;; 
} 

sau đó tôi cố gắng để cư mya ViewModel trong lớp WebUI của tôi bằng cách sử dụng đoạn mã sau

  var projectedNetworks = 
      from n in GetAllNetworks() 
      select new NetworkViewModel 
      { 
       Name = n.Name, 
       Contacts = from contact in networkList 
        .SelectMany(nc => nc.NetworkContacts) 
        .Where(nc => nc.Member == true) 
        .Where(nc => nc.NetworkId == n.ID) 
        .Select(c => c.Contact)       
        select contact, 
      }; 

     return projectedNetworks; 

Vấn đề bây giờ xảy ra trong tôi mới được tạo ra NetworkViewModel Các đối tượng Liên hệ bộ sưu tập này không bao gồm bất kỳ dữ liệu được tải cho RelationshipSource.Target hoặc RelationshipSource.Source

Tuy nhiên, dữ liệu có khi chạy từ phương pháp IQueryable Repository gốc. Tuy nhiên, dữ liệu bao gồm có liên quan dường như không được chuyển vào bộ sưu tập Danh bạ mới được tạo khi tôi sử dụng mã Select New NetworkViewModel {} ở trên.

Có cách nào để bảo toàn dữ liệu Bao gồm này khi dữ liệu được chuyển vào đối tượng mới không? Hiện tại, tôi chỉ tiếp tục nhận ngoại lệ NULL

Trả lời

6

Here's an explanation of what's happening, with a workaround.

Trong trường hợp của bạn, tuy nhiên, tôi nghĩ rằng có một giải pháp tốt hơn tốt hơn so với nội dung trong bài viết được liên kết đó. Bạn đã sử dụng mô hình chế độ xem cho Network. Tốt lắm! Làm điều đó để liên lạc (và đó là tài sản liên quan), quá, và các vấn đề của bạn với tải háo hức sẽ kỳ diệu biến mất. Chiếu luôn hoạt động.

+0

Xin chào Craig - Cảm ơn bạn đã nhận xét và liên kết. Tôi nên sử dụng ContactViewModel ở đâu - Bạn có gợi ý rằng tôi thực hiện một phép chiếu trong một lệnh cấm? Điều đó có thể không? –

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