2009-07-24 13 views
6

tôi đang chơi xung quanh với kho lưu trữ đơn giản cận âm 3 và đang đánh bức tường trong việc tìm hiểu làm thế nào để đối phó với các phím nước ngoài ...cận âm 3 - SimpleRepository

Nếu tôi có một đối tượng sản phẩm có chứa

int ID; 

string name; 

string description; 

Category category; 

int categoryID (this one is just to persist the product's categoryID to the DB) 

and a category object containing 

int ID; 

string name; 

thế nào thế nào tôi có thể sử dụng kho lưu trữ để mang lại một danh sách của tất cả các sản phẩm với đối tượng thể loại của họ instantiated?

Hiện tại tôi đã viết truy vấn LINQ tham gia vào product.categoryID = category.ID, tất cả đều tốt và tốt, nhưng khi tôi .ToList() các kết quả của truy vấn này, Danh mục của sản phẩm không được khởi tạo .

Có cách nào để thực hiện việc này hay tôi phải tự tạo nhanh Danh mục cho từng sản phẩm?

Cảm ơn,

Paul

Trả lời

6

bạn cần phải nhận được LINQ để cư nó,
sử dụng một cái gì đó giống như
var query = từ sản phẩm trong repo.All (Sản phẩm)
tham gia categoryItem in repo.Tất cả (Danh mục)
trên sản phẩm.CategoryId eq uals categoryItem.Id
chọn mới {
ID = product.ID,
name = product.name,
description = product.description,
categoryId = product.CategoryId
category = categoryItem
};

+0

Điều này nghe có vẻ như câu trả lời ... sẽ thử nó tối nay sau đó cho bạn biết fella Chúc mừng người đàn ông – Paul

+0

Xin chào Podge, cảm ơn sự giúp đỡ của bạn. Để lấy lại danh sách các sản phẩm này, tôi sẽ phải tự bước qua danh sách và tạo một đối tượng sản phẩm mới cho mỗi kết quả (hiện là loại [loại ẩn danh]) – Paul

+0

Không có cách nào đơn giản tôi biết, ngoại trừ việc gán nó theo cách thủ công như bạn đang nói. Kiểu ẩn danh chỉ được đọc trong C#. Tùy chọn khác là tải Danh mục một cách riêng biệt và lặp qua các sản phẩm. Bạn có thể cache bảng Category và sau đó bạn chỉ nhấn cơ sở dữ liệu một lần. Xin lỗi, đó không phải là câu trả lời bạn muốn. – Podge

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