0

我有名为 Products 和 Categories 的表,Products 表的行之一包括这样的数据:

ProductId,ProductName,CategoryId

类别包括

CategoryId,CategoryInfo

所以我得到了ExecudeReader()使用 ado.net 之类的行

List<ProductEntity> lst = new List<ProductEntity>();
using (SqlConnection connection = new SqlConnection(constr))
        {
            SqlCommand command = connection.CreateCommand();
            command.CommandText = "select ProductId,ProductName,CategoryId from Products";
            connection.Open();
            using (SqlDataReader reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    lst.Add(new ProductEntity()
                    {
                        ProductId = int.Parse(reader[0].ToString()),
                        ProductName= reader[1].ToString(),
                        CategoryId=int.Parse(reader[2].ToString())
                    });
                }
            }
        }

但我也想从 Categories 表中获取 CategoryInfo 而不使用另一个ExecuteReader(). 如果可以,我可以为产品和类别创建一个实体类吗?我该怎么做?还是存在其他最佳实践?

4

1 回答 1

1

将您的查询更改为:

SELECT p.ProductId, p.ProductName, p.CategoryId, c.CategoryInfo
FROM Products p
JOIN Categories c ON c.CategoryId = p.CategoryId

CategoryInfo作为查询返回的第四个元素获取:

CategoryInfo= reader[3].ToString()

说清楚 - 你必须在课堂上拥有CategoryInfo财产。ProductEntity

于 2013-03-13T07:24:38.197 回答