Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建关系类对象_C#_Sql Server 2008_Ado.net - Fatal编程技术网

C# 创建关系类对象

C# 创建关系类对象,c#,sql-server-2008,ado.net,C#,Sql Server 2008,Ado.net,我有一个名为Products and Categories的表,其中一个Products表的行包含如下数据: ProductId,ProductName,CategoryId 类别包括 CategoryId,CategoryInfo 因此,我使用类似ado.net的ExecudeReader()获取行 List<ProductEntity> lst = new List<ProductEntity>(); using (SqlConnection connection

我有一个名为Products and Categories的表,其中一个Products表的行包含如下数据:

ProductId,ProductName,CategoryId
类别包括

CategoryId,CategoryInfo
因此,我使用类似ado.net的
ExecudeReader()
获取行

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())
                    });
                }
            }
        }
List lst=new List();
使用(SqlConnection=newsqlconnection(constr))
{
SqlCommand=connection.CreateCommand();
command.CommandText=“从产品中选择ProductId、ProductName、CategoryId”;
connection.Open();
使用(SqlDataReader=command.ExecuteReader())
{
while(reader.Read())
{
lst.Add(新产品实体()
{
ProductId=int.Parse(读取器[0].ToString()),
ProductName=reader[1]。ToString(),
CategoryId=int.Parse(读取器[2].ToString())
});
}
}
}
但我也希望不使用另一个
ExecuteReader()
就可以从Categories表中获取categorinfo。我可以为产品和类别创建一个实体类吗?如果可以,我如何创建?或者存在其他最佳做法?

将查询更改为:

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()

为了清楚起见-您必须在
ProductEntity
类中具有
CategoryInfo
属性。

当用作命令文本时
cmdText
具有什么值?如果可能,请使用联接