2012-09-15 46 views
0

對於一個非常簡單的示例,A公司具有man用戶。我有兩個表格,公司和用戶。用戶表有一個外鍵CompanyId。假設我必須填寫公司和他們所有用戶的列表,我將如何將其與數據讀取器進行映射?如何選擇和映射與IDataReader和SQL的1:N關係

我需要多個select語句嗎?一個是爲了獲得所需的所有公司,另一個是爲了獲得所選公司內的所有用戶?下面的僞代碼。

select companies; 
Loop through all companies returned and create a list of companyids for where in. 
select users where in (companyid list created above) 
attach users to selected companies  

從邏輯上說,完成此任務的最佳方法是什麼。

+0

最好在SQL Server上加入結果。 – driis

回答

0

如果你不想使用ORM(這會讓事情變得更容易),那麼你想做一個JOIN語句,然後可能使用一個Dictionary來存儲每個公司的主鍵作爲鍵字典,然後將Company實例作爲字典的值,該實例將包含User實例的集合。

E.g.

SELECT [column list] FROM Companies c INNER JOIN Users u ON u.CompanyId = c.Id; 
+0

然後,在繪製這些公司時,請檢查並確保它不是爲所有具有相同價值的結果建立公司。公司1有10個用戶,它將在沒有手動檢查的情況下建立同一個公司10次? –

+0

是的,這就是爲什麼字典可能有助於跟蹤哪些公司實例已經創建。 – devdigital