Subsonic 3 - SimpleRepository

2019-01-18 07:01发布

I am playing around with Subsonic 3's simple repository and am hitting walls in understanding how to deal with foreign keys...

If I have a product object containing

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;

How can I use the repository to bring back a list of all products with their category object instantiated?

At the moment I have written a linq query which joins on product.categoryID = category.ID which is all well and good, but when I .ToList() the results of this query, the product's Category isn't instantiated.

Is there a way to do this, or do I have to manually instantiate the Category for each product?

Thanks,

Paul

2条回答
走好不送
2楼-- · 2019-01-18 07:31

This article appears to address "eager loading" with subsonic: http://tryingthisagain.com/2007/12/03/hijacking-the-subsonic-relationship-load-process/

查看更多
混吃等死
3楼-- · 2019-01-18 07:38

you need to get linq to populate it,
using something like
var query = from product in repo.All(Product)
join categoryItem in repo.All(Category)
on product.CategoryId equals categoryItem.Id
select new {
ID = product.ID,
name = product.name,
description = product.description,
categoryId= product.CategoryId
category = categoryItem
};

查看更多
登录 后发表回答