从多个类访问属性

时间:2012-08-29 16:17:03

标签: c# asp.net

我正在创建一个Web应用程序,我有两个类:

public class MOrderMain
{
    public int ID { get; set; }
    public int CompanyID { get; set; }
    public string CompanyName { get; set; }
    public DateTime OrderDate { get; set; }
    public string BillingName { get; set; }
    public string BillingAddress { get; set; }
    public string DeliveryName { get; set; }
    public string DeliveryAddress { get; set; }
}

public class MOrder
{
   public int ID { get; set; }
   public int OrhID { get; set; }
   public int ProID { get; set; }
   public string Name { get; set; }
   public int Quantity { get; set; }
   public double Rate { get; set; }
   public double Amount { get; set; }
   public int DeliveredQty { get; set; }
}

我想从两个类中检索细节。例如,我想得到 来自班级ID的{​​{1}}和Billing Name以及班级MorderMain中的所有属性。我怎么能这样做?

我通过数据库获取值。我有查询,但我将如何分配数据以及如何从两者中检索?

MOrder

1 个答案:

答案 0 :(得分:0)

由于您要从数据库中的两个表中检索数据,但希望将它们组合到应用程序中,因此解决方案是创建一个包含从存储过程返回的数据的类:

public class MAllOrderDetails
{
   public int ID { get; set; }
   public string BillingName { get; set; }
   // include the other billing details you want here

   public int OrhID { get; set; }
   public int ProID { get; set; }
   public string Name { get; set; }
   public int Quantity { get; set; }
   public double Rate { get; set; }
   public double Amount { get; set; }
   public int DeliveredQty { get; set; }
}

然后,您的查询将更改为填写List<MAllOrderDetails>

这使您的应用程序只处理单个类的集合,并且所有数据都包含在单个对象中。

var mylist = new List<MAllOrderDetails>();
//...
while (_dr.Read())
{
    mylist.Add(new MAllOrderDetails
    {
        ID = Convert.ToInt32(_dr["ordID"]),
        BillingName = _dr["BillingName"].ToString(),
        // etc.
        OrhID = Convert.ToInt32(_dr["orhID"]),
        ProID = Convert.ToInt32(_dr["proID"]),
        Name = _dr["pName"].ToString(),
        Quantity = Convert.ToInt32(_dr["ordQty"]),
        Rate = Convert.ToDouble(_dr["ordRate"]),
        Amount = Convert.ToDouble(_dr["ordAmount"]),
        DeliveredQty = Convert.ToInt32(_dr["ordQtyDelivered"])
     });
}

<强>更新

你可能可以将其作为不创建其他类的最接近的解决方案:

class MAllOrderDetails
{
    public MOrder Order { get; set; }
    public MOrderMain OrderMain { get; set; }
}

但我觉得,从可维护性的角度来看,这会让您比仅创建其他类更令人头疼。