2010-06-28 33 views
5

Tôi có một chế độ xem được lập chỉ mục mà tôi cần phải chỉ định gợi ý không có khoảng trắng để cho nó hoạt động hợp lý. Thật không may khi nhìn thấy liên quan đến việc sửa đổi truy vấn T-SQL LINQ to SQL được tạo ra từ gợi ý NOLOCK, có vẻ như không có cách nào dễ dàng để tận dụng các gợi ý này trực tiếp hay là có?Làm thế nào để sử dụng gợi ý NOEXPAND với LINQ to SQL?

Suy nghĩ của tôi là sẽ có ý nghĩa khi cho phép tùy chỉnh nội dung này thông qua việc sử dụng thuộc tính hoặc khai báo thông qua dbml. Ngoài ra kể từ khi LINQ to SQL dường như chỉ làm việc nhắm mục tiêu SQL Server nó chỉ có ý nghĩa rằng chúng tôi cũng có thể tận dụng các tính năng nâng cao (nếu chúng tồn tại). Bất kể việc thực hiện mặc dù tôi quan tâm đến bất kỳ cách sáng tạo nào để giải quyết vấn đề này.

Trả lời

9

Tôi đã tìm thấy cách giải quyết có vẻ hoạt động nhưng yêu cầu tạo Chế độ xem thứ hai cho mỗi Chế độ xem SQL mà người dùng muốn sử dụng gợi ý NOEXPAND. Trong khung nhìn thứ hai, chỉ cần chọn tất cả các trường từ khung nhìn gốc và theo gợi ý NOEXPAND. Bất kỳ truy vấn LINQ to SQL nào cần sử dụng gợi ý NOEXPAND bây giờ có thể nhắm mục tiêu khung nhìn đó bao bọc bản gốc.

Chi tiết khác có thể được tìm thấy trong this MSDN post.

Một xuống phía những người khác để xem xét khi tạo quan điểm phụ thuộc là bạn sẽ phải chắc chắn để áp dụng các kịch bản tạo ra theo thứ tự phụ thuộc thích hợp

Có ai có bất kỳ lựa chọn thay thế tốt hơn? Tôi không muốn tạo thêm các khung nhìn SQL chỉ để hỗ trợ việc sử dụng gợi ý tối ưu hóa cần thiết này.

2

Tôi hoàn toàn đồng ý, nhưng tôi không tin có một phương pháp như vậy. Trong EF4, bạn có thể sử dụng ExecuteStoreCommand để cho phép bạn thực hiện SQL trực tiếp. Đó có thể là lựa chọn duy nhất của bạn nếu hiệu suất không thể chấp nhận được.

== EDIT ==

Bạn cũng có thể làm điều này trong LINQ to SQL thông qua phương pháp ExecuteQuery.

http://msdn.microsoft.com/en-us/library/bb399403.aspx

+0

Bây giờ Entity Framework đang trở thành có khả năng hơn tôi có thể có một cái nhìn thứ hai vào nó và xem xét chuyển đổi từ LINQ to SQL nhưng bây giờ, trừ khi tôi có thể tìm thấy đủ lý do thuyết phục và thời gian để nghiên cứu chuyển đổi như vậy sau đó tôi m quan tâm hơn đến một giải pháp cho LINQ to SQL. Tôi sẽ viết tính năng ExecuteStoreCommand của EF4 lên như một lợi thế thú vị để tìm kiếm ngay bây giờ. – jpierson

+2

Vâng, oops. Tôi đã đọc chúng hoán đổi cho nhau ngày nay! :) Tôi đã cập nhật câu trả lời của mình với LINQ to SQL. Nó không bao giờ thú vị để phá vỡ khuôn kiến ​​trúc và làm một cái gì đó giống như thực hiện một chuỗi SQL, nhưng xem xét rằng bạn đã gắn liền với SQL Server, phản đối chỉ là sự tinh khiết không thực tế. –

+0

Trong trường hợp cụ thể của tôi, tôi đang đối phó với các truy vấn hoàn toàn bị hoãn lại và có tính động cao nên tôi tin rằng nó không bao gồm các kỹ thuật thực thi trực tiếp như ExecuteQuery. – jpierson

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