如何选择和映射与IDataReader和SQL的1:N关系

时间:2012-09-15 17:18:04

标签: c# asp.net sql

举一个非常简单的例子,A​​公司有男性用户。我有两个表,公司和用户。 User表具有外键CompanyId。假设我必须填写公司及其所有用户的列表,我将如何使用datareader进行映射?

我需要多个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     

逻辑上,完成此任务的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

如果您不想使用ORM(这会使这更容易),那么您想要执行JOIN语句,然后使用Dictionary将每个公司的主键存储为字典的键,然后是Company实例作为字典的值,它将包含User个实例的集合。

E.g。

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