2013-09-18 5 views
0

Мне нужно построить очень сложный вид и запрос, возможно. У меня есть 3 таблицы в моей базе данных: Lote, Carga и RegistosForno. Моя модель имеет все эти 3 класса:Очень сложный вид с asp.net MVC

Класс "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; } 
} 

My vi РЭБ должен выглядеть следующим образом:

Lote 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 

В основном нужно: Для каждого Лоте получить все записи из Carga связанные с этим лотом, и получить все записи из regForno, связанные с этим Carga.

Мой опыт работы с asp.net не много, но я смог реализовать несколько вещей, в основном основанных на учебниках и примерах. Однако я не смог найти пример для этого или любого учебника, делающего такие вещи. Я считаю, что это очень специфично для моих пользовательских запросов.

ответ

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

В 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> 


    } 

} 
} 

надеюсь, что это поможет.

+0

Привет и спасибо за ваш ответ. Воспользовавшись своими идеями и с некоторыми более намеками от более опытных людей, я в конечном итоге получил это. Я создал отношения между классами, и я создал модель View в контроллере, которая стала более сложной, чем ваша линия. Он работает сейчас, спасибо за вашу помощь. – aganju82

+0

рад услышать друг. затем подтвердите свой ответ. все счастливы –

0

Вы используете Entity Framework в качестве ORM? Моя практика использует LINQ, чтобы присоединиться к вашим классам домена на уровне доступа к данным, а затем проецировать результаты в viewmodel. Если вы используете EF, вы можете использовать свободный API для установления ваших отношений. Эта viewmodel должна быть передана в ваше представление. Я бы настоятельно советовал не передавать эти классы домена непосредственно в ваши взгляды с учетом ваших требований, но опять же я не знаю, как или вы абстрагировали свои данные в проекте.

Для получения более подробной информации, пожалуйста, обратитесь к ViewModel Best Practices.

Смежные вопросы