Array
(
)

Dúvida com lógica

Pjava
   - 21 jul 2013

Uma ajuda com lógica. Tenho uma tabela associativa, que grava 3 ID's(FK). E o sistema está assim. Num CheckBoxList, escolho, a deficiência do cara. Há três checkbox. Sendo um deles, quando selecionado, é listado abaixo outro CheckBoxList, com vários itens a serem escolhidos. Cada item, é o que chamamos de classificação dadeficiência e preciso pegar esses ID's quando selecionado. Meu código está assim:
List<EmployeeDeficiency> deficiencies = new List<EmployeeDeficiency>();
foreach (ListItem item in ddlDeficiencia.Items)
{
if (item.Selected)
{
if (item.Value != "-1")
{
deficiencies.Add(new EmployeeDeficiency
{
EmployeeId = employee.EmployeeId,
HazardId = Convert.ToInt32(item.Value)
});
}
else if (item.Value == "-1" && txtRiscoOutro.Text != "")
{
employee.HazardOther = txtRiscoOutro.Text;
}
}
}
Onde está EmployeeID e HarzardID, eu pego aí o código do Funcionário e o Código da deficiência. Agora, preciso pegar o cóigo da classificação, caso esteja checado(Visible true). É nesse momento que minha lógica esta ruim. Como adicionar no objeto deficiencies e depois gravar no BD, assim:
_employeeDeficiencyService.InsertAllEmployeeDeficiencies(deficiencies );
É uma tabela Associativa(N to N).

Gabrielsimas
   - 23 jul 2013

Grande PJava,

Suas dúvidas como sempre desafiam os nossos conhecimentos.

Eu quando trabalho com relacionamentos N para N, eu coloco sempre um foreach dentro do principal e neste eu dou sempre um add, já no seu caso é diferente, você já deixou a Entidade Deficiency utiilizada, podemos fazer o que precisa desta forma, por exemplo:
Vocês fez toda aquela lógica para gravar as deficiencias certo? e dentro de deficiencias você gravou o idHazard e IdFuncionario... correto? pois bem. Fora deste foreach você vai criar o foreach de classificação. e dentro dela vai fazer quase que a mesma regra de deficiencies, a grande diferença é que ao final deste foreach você vai usar dificiencies.classification.Add(objetoDentroDoForeach) e pronto. Pelo que eu entendi, existem muitas dificiências para muitas classificações... creio que seja isso. E após estes bloco foreach você pode partir para persistir os dados.

Faça um teste e poste aqui.

Forte Abraço, é um prazer ajudar.