我有两张桌子:
[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
- 对象并遍历SELECT * FROM person WHERE companyID = @companyID
检索到的行,或者有更好的方法吗?
答案 0 :(得分:5)
一种相当简单的方法是使用将公司和用户表连接在一起的查询:
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
属性,但这样做的代价非常小。
答案 1 :(得分:1)
实体框架以有效方式 .....
完成工作实体框架(EF)是一种对象关系映射器,它使.NET开发人员能够使用特定于域的对象处理关系数据。它消除了开发人员通常需要编写的大多数数据访问代码的需要。
Entity Framework允许您通过在EF Designer中编写代码或使用框和行来创建模型。这两种方法都可用于定位现有数据库或创建新数据库。这段简短的视频解释了差异以及如何找到适合您的差异。