Gracias por tu tiempo.
de esta forma lo tengo resuelto. Funciona pero no se es la mejor manera:
Aunque bien dicen por ahíi que si algo no está roto no lo arregles, quisiera buscar la solución mas eficiente.
Código:
public static List<FacturaProveedor> SelectAll()
{
Database myDatabase = DatabaseFactory.CreateDatabase("cnn");
DbCommand myCommand = myDatabase.GetStoredProcCommand("FacturasProveedoresSelectAll");
//instancio conexión para línea de factura
Database myDatabase2 = DatabaseFactory.CreateDatabase("cnn");
DbCommand myCommand2 = myDatabase.GetStoredProcCommand("LineaFacturasProveedoresSelect");
//Ejecuto la conexión que trae facturas
DataSet ds = myDatabase.ExecuteDataSet(myCommand);
// declaro el dataset que traerá líneas de factura
DataSet ds2;
List<FacturaProveedor> _lista = new List<FacturaProveedor>();
FacturaProveedor fc;
lineaFacturaProveedor lf;
//seteo factura y detalles de factura
foreach (DataRow row in ds2.Tables[0].Rows)
{
fc = new FacturaProveedor();
fc.lineasFactura = new List<lineaFacturaProveedor>();
fc.numeroFactura = (string)row["NroFactura"];
fc.fechaFactura = (DateTime)row["FechaFactura"];
fc.fechaVencimiento = (DateTime)row["FechaVencimiento"];
fc.idFactura = (int)row["IdFactura"];
fc.idProveedor = (int)row["CodProveedor"];
myDatabase2.AddInParameter(myCommand2,"@IdFactura",DbType.Int32,(int)row["IdFactura"]);
ds2 = myDatabase2.ExecuteDataSet(myCommand2);
foreach(DataRow rowLinea in ds.Tables[0].Rows)
{
lf = new lineaFacturaProveedor();
lf.cantidad = (int)rowLinea["Cantidad"];
lf.facturaProveedor = fc;
lf.idProducto = (int)rowLinea["iDProducto"];
lf.importe = (float)rowLinea["Importe"];
lf.producto = new Producto();
lf.producto.id = (int)rowLinea["IDProducto"];
lf.producto.Nombre = (string)rowLinea["NombreProducto"];
fc.lineasFactura.Add(lf);
}
_lista.Add(fc);
}
return _lista;
}