Tôi đang cố gắng tìm ra lý do tại sao một truy vấn đơn giản trong LINQ trả về kết quả lẻ.Truy vấn LINQ Trả về nhiều bản sao của kết quả đầu tiên
Tôi có chế độ xem được xác định trong cơ sở dữ liệu. Về cơ bản nó tập hợp một số bảng khác và thực hiện một số dữ liệu đung đưa. Nó thực sự không phải là bất cứ điều gì đặc biệt ngoại trừ thực tế là nó đề cập đến một tập dữ liệu lớn và có thể hơi chậm.
Tôi muốn truy vấn chế độ xem này dựa trên một thời gian dài. Hai truy vấn mẫu bên dưới hiển thị các truy vấn khác nhau cho chế độ xem này.
var la = Runtime.OmsEntityContext.Positions.Where(p => p.AccountNumber == 12345678).ToList();
var deDa = Runtime.OmsEntityContext.Positions.Where(p => p.AccountNumber == 12345678).Select(p => new { p.AccountNumber, p.SecurityNumber, p.CUSIP }).ToList();
Người đầu tiên sẽ trao lại danh sách. Cái thứ hai sẽ là một danh sách các đối tượng ẩn danh.
Khi tôi thực hiện các truy vấn này trong khung thực thể, công cụ đầu tiên sẽ đưa tôi trở lại danh sách kết quả mà tất cả chúng đều giống hệt nhau.
Truy vấn thứ hai sẽ đưa tôi trở lại dữ liệu trong đó số tài khoản là số mà tôi truy vấn và các giá trị khác sẽ khác nhau. Điều này dường như làm điều này trên cơ sở số tài khoản, tức là nếu tôi truy vấn một số tài khoản hoặc một số đối tượng Vị trí cho một tài khoản sẽ có cùng giá trị (giá trị đầu tiên trong danh sách Vị trí cho tài khoản đó) và tài khoản thứ hai sẽ có một tập các đối tượng Vị trí mà tất cả đều có cùng giá trị (một lần nữa, đối tượng đầu tiên trong danh sách các đối tượng Vị trí).
Tôi có thể viết SQL có hiệu lực giống như một trong hai truy vấn EF. Cả hai đều trở lại với kết quả (nói bốn) hiển thị dữ liệu chính xác, một số tài khoản với các số chứng khoán khác nhau.
Tại sao điều này lại xảy ra ??? Có điều gì đó mà tôi có thể làm sai để nếu tôi có bốn kết quả cho truy vấn đầu tiên ở trên mà dữ liệu của bản ghi đầu tiên cũng xuất hiện trong các đối tượng của 2-4?
Tôi không thể hiểu được điều gì sẽ gây ra điều này. Tôi đã tìm kiếm trên Google tất cả các loại từ khóa và chưa gặp bất kỳ ai có vấn đề này. Chúng tôi chia lớp một phần ra khỏi lớp Positions cho chức năng bổ sung (đối tượng thông minh) và một số thuộc tính thông minh. Thậm chí còn có một số nhà xây dựng cung cấp một số kiểu hỗ trợ kiểu xem. Không có điều nào trong số này được gọi trong yêu cầu (tôi chắc chắn 99% điều này). Tuy nhiên, chúng tôi làm cùng một mẫu trên tất cả các ứng dụng.
Điều duy nhất tôi có thể nghĩ đến là việc ánh xạ trong EDMX rất khó khăn. Có cách nào mà điều này sẽ xảy ra nếu "khóa chính" trong EDMX không thực sự độc đáo cho cách khung nhìn được xây dựng không? Tôi nghĩ rằng dev đã nhập mô hình này vào EDMX để cho nhà thiết kế tự động chọn những gì sẽ là duy nhất.
Bất kỳ trợ giúp nào cũng sẽ mang lại cho bạn một số hy vọng!
Lấy tập lệnh SQL được tạo ra và chạy nó tương tác trong Management Studio để xem những gì thực sự xảy ra –
Như đã nói, có thể sử dụng một profiler để xem SQL đang được excuted. –