【发布时间】:2018-10-22 06:44:04
【问题描述】:
我有两张桌子:
[Company]
- CompanyID
- Company_Name
- softID
[User]
- UserID
- CompanyID
- User_Name
在我的后端,我有以下类:
Company
- CompanyID
- Company Name
- List<User> CompanyUsers
我只使用System.Data.SqlClient。
我的问题是:
如何检索公司对象及其用户?
我目前在我的数据访问类中有这个方法:
public Company getCompany(int _softID)
{
Company temp = new Company();
conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString);
SqlCommand command = new SqlCommand(@"SELECT * FROM company WHERE softID = @softID", conn);
command.Parameters.Add("@softID", SqlDbType.Int).Value = _softID;
{
conn.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
temp.CompanyID = int.Parse(reader["companyID"].ToString());
temp.companyName = reader["company_name"].ToString();
}
conn.Close();
}
return temp;
}
}
我怎样才能以最有效的方式找回我的公司用户?
我是否需要在我的 DAL getUsersByCompanyID 中实现另一种方法,在那里我将传递我的 temp-object 并循环通过 SELECT * FROM person WHERE companyID = @companyID 检索到的行,还是有更好的方法?
【问题讨论】:
-
softID 对表中的每个公司都是唯一的吗?或者不止一家公司可以拥有相同的softID?
-
每个公司都是独一无二的
-
执行
inner join,然后在执行阅读器时,将用户添加到Company对象的列表中。应该很容易,因为您正在为该特定公司获取用户 -
我相信您会希望将您的两个表连接在一起,然后遍历结果以构建您的用户列表。所以你的查询是: SELECT * FROM Company c JOIN User u ON c.CompanyID = u.CompanyID WHERE c.softID = @softID;