0

我可能需要构建一个非常复杂的视图和查询。我的数据库中有 3 个表:Lote、Carga 和 RegistosForno。我的模型有所有这 3 个类:

“Carga”类

public partial class carga
{
    public string cga_numero { get; set; }
    public string cem_numero { get; set; }
    public string lot_numero { get; set; }
    public string tpe_numero { get; set; }
    public string buj_numero { get; set; }
    public string ope_numero { get; set; }
    public Nullable<decimal> for_numero { get; set; }
    public string ret_numero { get; set; }
    public Nullable<decimal> cga_carga { get; set; }
    public Nullable<int> cga_parte_lote { get; set; }
    public Nullable<decimal> cga_data_in_forno { get; set; }
    public Nullable<decimal> cga_hora_in_forno { get; set; }
    public string cga_tmp_in_forno { get; set; }
    public Nullable<decimal> cga_data_out_forno { get; set; }
    public Nullable<decimal> cga_hora_out_forno { get; set; }
    public string cga_tmp_out_forno { get; set; }
    public Nullable<int> cga_estado { get; set; }
    public Nullable<int> cga_cem_num_utilizacoes { get; set; }
    public Nullable<int> cga_ret_total_utilizacoes { get; set; }
    public Nullable<int> cga_ret_num_utilizacoes { get; set; }
    public Nullable<int> cga_ret_lim_utilizacoes { get; set; }
    public Nullable<int> cga_buj_total_utilizacoes { get; set; }
    public Nullable<int> cga_buj_num_utilizacoes { get; set; }
    public Nullable<int> cga_buj_lim_utilizacoes { get; set; }
    public string cga_lot_tmp_out_forno { get; set; }
    public string cga_lot_tmp_in_forno { get; set; }
    public Nullable<int> cga_lot_cem_num_utilizacoes { get; set; }
    public string cga_datahora { get; set; }
}

“洛特”班

public partial class lote
{
    public string lot_numero { get; set; }
    public string ope_numero { get; set; }
    public string tpe_nome { get; set; }
    public Nullable<int> lot_peso_total { get; set; }
    public Nullable<int> lot_total_cargas { get; set; }
    public Nullable<int> lot_cargas { get; set; }
    public Nullable<int> lot_estado { get; set; }
    public Nullable<decimal> lot_data { get; set; }
    public Nullable<decimal> lot_hora { get; set; }
    public Nullable<decimal> lot_peso_prp { get; set; }
    public Nullable<decimal> lot_peso_total_cargas { get; set; }
    public Nullable<int> lot_cem_num_utilizacoes { get; set; }
    public Nullable<int> lot_cem_tipo { get; set; }
    public string lot_datahora { get; set; }

}

“RegForno”类

public partial class regforno
{
    public int reg_id { get; set; }
    public string cga_numero { get; set; }
    public Nullable<decimal> for_numero { get; set; }
    public string ope_numero { get; set; }
    public Nullable<int> reg_id_plc { get; set; }
    public Nullable<decimal> reg_hora { get; set; }
    public Nullable<decimal> reg_data { get; set; }
    public Nullable<int> reg_temperatura { get; set; }
    public Nullable<int> reg_estado { get; set; }
    public Nullable<int> reg_cga_tmp_forno { get; set; }
    public string reg_datahora { get; set; }
}

我的观点应该是这样的:

洛特 1

>Carga 1
    >Registo 1 forno Carga 1
    >Registo 2 forno Carga 1
>Carga 2
    >Registo 1 forno Carga 2
    >Registo 2 forno Carga 2
>Carga 3
    >Registo 1 forno Carga 3
    >Registo 2 forno Carga 3
>Carga 4
    >Registo 1 forno Carga 4
    >Registo 2 forno Carga 4

洛特N

>Carga 1
    >Registo 1 forno Carga 1
    >Registo 2 forno Carga 1
>Carga 2
    >Registo 1 forno Carga 2
    >Registo 2 forno Carga 2
>Carga 3
    >Registo 1 forno Carga 3
    >Registo 2 forno Carga 3
>Carga 4
    >Registo 1 forno Carga 4
    >Registo 2 forno Carga 4

基本上我需要: 对于每个 Lote,从 Carga 获取与该 Lote 相关的所有记录,并从 regForno 获取与该 Carga 相关的所有记录。

我在 asp.net 方面的经验并不多,但我已经能够实现一些主要基于教程和示例的东西。但是,我还没有找到这个例子或任何做这种事情的教程。我相信我的用户要求非常具体。

4

2 回答 2

0

你的类之间应该有关系,比如,

public partial class carga
{
public int Id{get; set;}
..
..
public List<lote> lots{get;set;} 
}

public partial class lote
{
public int Id{get; set;}
..
..
public List<reg> regs{get;set;} 
}

public partial class reg
{
public int Id{get; set;}
..
..

}

如果您使用实体框架或其他东西等来准备您的类。在您的控制器中,

 List<cargs> list=context.Carga.ToList();
    return View();

在视图中,

@foreach(var item in Model)
{
<h2>@item.Name</h2>
List<Lots> listm=Model.Lots.Where(m=>m.Id==item.Id).ToList();
foreach(var i in listm)
{
<h3>@i.Name</h3>
List<Regs> listr=i.Regs.Where(m=>m.Id==i.Id).ToList();
foreach(var j in listr)
{
<h4>@j.Name</h4>


   }

}
}

希望能帮助到你。

于 2013-09-18T15:25:22.633 回答
0

您是否使用实体框架作为您的 ORM?我的做法是使用 LINQ 在数据访问层中加入域类,然后将结果投影到视图模型中。如果您使用的是 EF,那么您可以利用 fluent API 来设置您的关系。此视图模型应传递到您的视图中。考虑到您的要求,我强烈建议不要将这些域类直接传递到您的视图中,但我也不知道您是如何或是否在项目中抽象了您的数据。

有关详细信息,请参阅ViewModel 最佳实践。

于 2013-09-18T14:22:08.970 回答