Tôi đang phát triển một ứng dụng lưu trữ tệp và chúng tôi đã kết hợp loại FileStream trong cơ sở dữ liệu của mình. Hệ thống dự kiến sẽ hỗ trợ các tệp lớn. Một phần của ứng dụng cho phép tải lên hàng loạt nhiều tài liệu. Các tài liệu này sau đó phải được liên kết với các thực thể khác trong hệ thống.Làm cách nào để ngăn chặn Entity Framework tải cột FileStream thành một mảng byte?
Một trang được thiết kế để hiển thị các tài liệu chưa được liên kết, để cho phép người dùng liên kết từng tài liệu với các thực thể. Sau khi thực hiện một số thử nghiệm tải của quá trình tải lên, chúng tôi thấy rằng dấu chân bộ nhớ của quá trình nhân viên ASP.NET tăng vọt lên trên GB khi tải trang Tài liệu chưa được liên kết này.
Sau khi điều tra, có vẻ như Khuôn khổ thực thể đang tải toàn bộ thực thể hàng tài liệu (bao gồm cả FileStream, được chuyển đổi thành mảng byte) cho hàng trăm tài liệu chưa được liên kết. Trong lớp kho lưu trữ của tôi, tôi không lưu mảng byte này khi chuyển đổi sang một Mô hình, nhưng lúc đó đã quá muộn. EF đã dành thời gian và bộ nhớ để phân bổ mảng byte vào biểu diễn lớp Repository.
Có cách nào tôi có thể yêu cầu EF không tải mảng byte này trừ khi tôi yêu cầu không?
http://stackoverflow.com/a/3293286/782754 là không thể thực hiện để đánh dấu một tài sản để tải lười biếng, nhưng bạn có thể sử dụng các khái niệm khác –