Sau khi điên tiết lên googling, tôi đã tìm ra câu trả lời: EF4 - Thủ tục được lưu trữ đã chọn không trả về cột nào
EF không thể lấy siêu dữ liệu từ một proc được lưu trữ sử dụng truy vấn động hoặc bảng tạm thời. Giải pháp là tạo thủ công kiểu trả về phức tạp HOẶC đặt
SET FMTONLY OFF
trong định nghĩa proc được lưu trữ của tôi. Nguy hiểm với tùy chọn thứ hai, tất nhiên là proc được lưu trữ sẽ được thực thi khi Visual Studio thực hiện lệnh gọi siêu dữ liệu, vì vậy điều này lý tưởng chỉ được sử dụng nếu thủ tục được lưu trữ không thay đổi bất kỳ điều gì.
CẬP NHẬT:Một giải pháp thay thế là đảm bảo rằng thủ tục được lưu trữ thực sự hoạt động. Một điều khác bạn có thể làm là tạo một thủ tục giả được lưu trữ trả về các cột bạn muốn, liên kết với nó và sau đó thực hiện logic thực tế.