Array
(
)

Consulta Linq que funcionava no Visual Studio 2012 não funciona no Visual Studio 2013.

Elessandro Poças
   - 15 jun 2014

Olá a todos,
Tenho um aplicação desenvolvida usando Visual Studio 2012 + Framework 4.5 + Entity Framework 5.0.0 + BD MySQL.
Está mesma aplicação migrei para Visual Studio 2013 + Framework 4.5.1 + Entity Framework 6.1.0 + BD MySQL.
A Aplicação funciona perfeitamente, a não ser por uma consulta Linq que é usada para gerar um relatório que parou de funcionar. Segue abaixo o código da mesma:
private void btnGerar_Click(object sender, EventArgs e)
{
string auxStatus = cbClienteStatus.Text;
if (cbClienteStatus.Text == "TODOS")
{
auxStatus = "";
}
if (cbClienteStatus.Text == "ATIVOS")
{
auxStatus = "A";
}
if (cbClienteStatus.Text == "CANCELADOS")
{
auxStatus = "I";
}
else if (cbClienteStatus.Text == "")
{
MessageBox.Show("Escolha uma opção: \n TODOS, \n ATIVOS, \n CANCELADOS.", "SigPro - Aviso do Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
cbClienteStatus.Focus();
return;
}
using (var ctx = new sigproEntities())
{
var consulta = (from t in ctx.termo
where t.Empresa_Id == frmPrincipal.IDEMPRESA && t.SituacaoTermo.Contains(auxStatus)
orderby t.cliente.ClienteNome
select new
{
t.cliente.ClienteNome,
t.cliente.CpfCnpj,
t.EndInstalacao,
t.Termo_Id,
t.DtCompra,
t.DtAtivacao,
t.DtCancelamento,
t.plano.DescricaoPlano,
t.SituacaoTermo
}).ToList();
ctx.Dispose();
Reports.stiRelatorioTermoAdesaoStatus report = new Reports.stiRelatorioTermoAdesaoStatus();
report.RegBusinessObject("SigPro", "Termo", consulta);
report.Dictionary.SynchronizeBusinessObjects(2);
report.Show();
}
}
No Visual Studio 2012 funciona perfeitamente, só que no Visual Studio 2013 me retorna o seguinte erro:
Bom nesta consulta ele retorna 3 campos DateTime: DtCompra, DtAtivacao, DtCancelamento, sendo que DtAtivacao e DtCancelamento podem ser null no banco de dados.
Clique na imagem para abrir em uma nova janela

Joel Rodrigues
   - 15 jun 2014

Então provavelmente o campo está nulo e você tenta converter null para DateTime. Acredito que uma simples verificação aí resolva.