我有两张表:
[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检索到的行,或者是否有更好的方法?
发布于 2018-05-12 03:57:50
一种相当简单的方法是使用将公司表和用户表连接在一起的查询:
public Company getCompany(int _softID)
{
Company temp = new Company();
conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Database"].ConnectionString);
SqlCommand command = new SqlCommand(@"SELECT c.CompanyId, Company_Name, UserId, UserName
FROM company As c
JOIN [User] As u ON c.CompanyId = u.CompanyId
WHERE softID = @softID;", conn);
command.Parameters.Add("@softID", SqlDbType.Int).Value = _softID;
{
conn.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
temp.CompanyID = int.Parse(reader["companyID"].ToString());
temp.companyName = reader["company_name"].ToString();
temp.CompanyUsers.Add(new User()
{
UserID = int.Parse(reader["UserId"].ToString()),
UserName = reader["UserName"].ToString()
});
}
conn.Close();
}
return temp;
}“缺点”是您经常重写CompanyID和companyName属性,但以一种简单的方式完成这项工作所付出的代价非常小。
发布于 2018-05-12 03:58:31
实体框架在中实现工作的有效方法.....
实体框架(EF)是一个对象-关系映射器,它使.NET开发人员能够使用特定于域的对象处理关系数据。它消除了开发人员通常需要编写的大多数数据访问代码的需要。
实体框架允许您通过在EF设计器中编写代码或使用框和线来创建模型。这两种方法都可用于针对现有数据库或创建新数据库。这个视频短片解释了不同之处,以及如何找到适合你的那个。
https://stackoverflow.com/questions/50299262
复制相似问题