2013-02-23 38 views
12

tôi có thể làmLinqPad LINQ Bao gồm() phương pháp khuyến nông không được tìm thấy ngay cả sau khi tham khảo thêm

var result = OAS_Questions.Count (oasq => oasq.Id!=0); 
result.Dump(); 

và thậm chí

var result = OAS_Questions; 
result.Dump(); 

Nhưng khi tôi cố gắng bao gồm các đối tượng con của "Câu hỏi" nói "Opitons" thông qua

var result = OAS_Questions.Include("OAS_QuestionOptions"); 
result.Dump(); 

Tôi thấy lỗi dưới đây

'System.Data.Linq.Table' không chứa một định nghĩa cho 'Bao gồm' và không có phương pháp mở rộng 'Bao gồm' chấp nhận một cuộc tranh luận đầu tiên của loại 'System.Data.Linq.Table' có thể là tìm thấy (nhấn F4 để thêm chỉ dẫn sử dụng hoặc tham chiếu lắp ráp)

Tôi đã thử thêm tham chiếu vào tham chiếu lắp ráp bên dưới.

  1. System.Code
  2. System.Data
  3. System.Data.Entity
  4. System.Data.Linq
  5. System.Linq.Expressions
  6. System.Data.DataSetExtensions

Nhưng phương pháp mở rộng "Bao gồm()" không khả dụng khi soạn truy vấn và nó cung cấp cú pháp er ror.

Trả lời

3

Theo mặc định, Linqpad sử dụng LINQ2Sql DataContext không cho phép bạn thực hiện bao gồm.

Để có được bao gồm phương pháp khuyến nông sử dụng một Typed DataContext từ lắp ráp dự án của bạn (EF4.x/EF5)

+0

Xem ở đây để giải thích về cách thêm tham chiếu đến Typed DataContext: http://stackoverflow.com/ a/24456720/1943 –

6

Bạn cần phải sử dụng một Typed DataContext (ObjectContext hoặc DbContext) từ DLL dự án EntityFramework của bạn. Bạn có thể làm điều này bằng cách thực hiện các bước sau:

  1. Bấm vào Add Connection liên kết ở góc trên cùng bên trái của ứng dụng.
  2. Trong trình hướng dẫn Choose Data Context, hãy chọn tùy chọn Use a typed data context from your own assembly.
  3. Nhấp vào tùy chọn LINQPad Driver phù hợp với giải pháp của bạn (LINQ to SQL, EF 4.0 trở xuống hoặc EF 4.1 trở lên), sau đó nhấp Tiếp theo.
  4. Nhấp vào Browse ở góc trên bên phải và điều hướng đến sau đó chọn lắp ráp dự án EF của bạn.
  5. Chọn Mô hình dữ liệu thực thể, sau đó nhấp vào OK.
  6. Chỉ định Server, Log on detailsdatabase, sau đó nhấp vào OK.

Bây giờ bạn có thể sử dụng câu lệnh .Include trong LinqPad.

22

Nếu bạn đang sử dụng EF qua LinqPad sau đó một phương pháp tốt hơn là sử dụng phiên bản mạnh mẽ gõ của .Include (http://msdn.microsoft.com/en-us/library/gg671236%28VS.103%29.aspx) như sau:

  1. mở LinqPad Query bạn
  2. nhấn chuột phải -> truy vấn tính
  3. thêm tham chiếu đến EntityFramework.dll
  4. qua tab Additional nhập khẩu namespace thêm System.Data.Entity

bạn sau đó có IntelliSense và có thể sử dụng phiên bản mạnh mẽ gõ của .Include, ví dụ:

var result = OAS_Questions.Include(q => q.OAS_QuestionOptions); 
+0

Đối với Entity Framework Core, hãy thêm tham chiếu đến hội đồng Microsoft.EntityFrameworkCore.dll và thêm không gian tên bổ sung Microsoft.EntityFrameworkCore –

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