LINQ to SQL

carlauclair Messages postés 2 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 10 juin 2010 - 7 juin 2010 à 21:27
carlauclair Messages postés 2 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 10 juin 2010 - 10 juin 2010 à 15:09
[b]Bonjour à tous,

Je débute avec ASP.net et me voilà face à un problème particulier. Je travaille avec deux "DataContext" différents. C'est à dire que je travaille avec deux bases de données différentes sur des serveurs différents. Lorsque j'exécute le code LINQ ci-dessous, tout se passe normalement./b

protected void Button_Test_Click(object sender, EventArgs e)
{
DB_LocalDataContext db_Local = new DB_LocalDataContext();
Data_PaieSQLDataContext db_PaieSQL = new Data_PaieSQLDataContext();

var reqPoste =
(from grh_poste in db_PaieSQL.GRH_POSTE
where grh_poste.ID_POST 16867 || grh_poste.ID_POST 17052
select new { MaxDeID_POST = grh_poste.ID_POST }
).AsEnumerable();

var reqHoraire =
(from req_Horaire in db_Local.Table_Horaire
select new { req_Horaire.ID_POST, req_Horaire.ACC }
).AsEnumerable();

var gridViewSource =
from poste in reqPoste
join horaire in reqHoraire
on poste.MaxDeID_POST equals horaire.ID_POST
into horaire_Join
from horaire2 in horaire_Join.DefaultIfEmpty()
select new
{
poste.MaxDeID_POST,
horaire2.ACC
};

Grid_Resultat.DataSource = gridViewSource;
Grid_Resultat.DataBind();
}

Par contre, dès que j'exécute le MÊME code avec la clause where mise en commentaire:

protected void Button_Test_Click(object sender, EventArgs e)
{
DB_LocalDataContext db_Local = new DB_LocalDataContext();
Data_PaieSQLDataContext db_PaieSQL = new Data_PaieSQLDataContext();

var reqPoste =
(from grh_poste in db_PaieSQL.GRH_POSTE
//where grh_poste.ID_POST 16867 || grh_poste.ID_POST 17052
select new { MaxDeID_POST = grh_poste.ID_POST }
).AsEnumerable();

var reqHoraire =
(from req_Horaire in db_Local.Table_Horaire
select new { req_Horaire.ID_POST, req_Horaire.ACC }
).AsEnumerable();

var gridViewSource =
from poste in reqPoste
join horaire in reqHoraire
on poste.MaxDeID_POST equals horaire.ID_POST
into horaire_Join
from horaire2 in horaire_Join.DefaultIfEmpty()
select new
{
poste.MaxDeID_POST,
horaire2.ACC
};

Grid_Resultat.DataSource = gridViewSource;
Grid_Resultat.DataBind();
}

[b]J'obtiens le message suivant:
L'exception System.NullReferenceException n'a pas été gérée par le code utilisateur
Message="La référence d'objet n'est pas définie à une instance d'un objet."

Je suis certain que quelqu'un de plus futé que moi connait la solution

Merci à tous.
Carl/b

2 réponses

GillouXman Messages postés 561 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 10 juin 2010
10 juin 2010 à 13:33
je comprends pas

le premier code tu dis qu'il fonctionne alors qu'il y a le where

et le deuxième code il fonctionne pas et y a pas le where ... ???

sinon regarde que ça te retourne bien qqchose

vu l'exception ta requête te renvoit null.
0
carlauclair Messages postés 2 Date d'inscription lundi 8 décembre 2008 Statut Membre Dernière intervention 10 juin 2010
10 juin 2010 à 15:09
Bonjour GillouXman,

Tout d'abord, merci de t'intéresser à mon problème. Tu dis n'y rien comprendre et bien ne t'inquiète, nous sommes maintenant deux à n'y rien comprendre. Mais je te confirme que le même code avec la claude where fonctionnait et sans la claude WHERE il ne fonctionnait pas. Je parle au passé car voici la solution. Dans le select de la variable gridViewSource, j'ai ajouter cette ligne qui valide que le résultat n'est pas null: "ACC=horaire2!=null?(horaire2.ACC!=null'horaire2.ACC:null):null"

protected void Button_Test_Click(object sender, EventArgs e)
{
DB_LocalDataContext db_Local = new DB_LocalDataContext();
Data_PaieSQLDataContext db_PaieSQL = new Data_PaieSQLDataContext();

var reqPoste =
(from grh_poste in db_PaieSQL.GRH_POSTE
//where grh_poste.ID_POST 16867 || grh_poste.ID_POST 17052
select new { MaxDeID_POST = grh_poste.ID_POST }
).AsEnumerable();

var reqHoraire =
(from req_Horaire in db_Local.Table_Horaire
select new { req_Horaire.ID_POST, req_Horaire.ACC }
).AsEnumerable();

var gridViewSource =
from poste in reqPoste
join horaire in reqHoraire
on poste.MaxDeID_POST equals horaire.ID_POST
into horaire_Join
from horaire2 in horaire_Join.DefaultIfEmpty()
select new
{
poste.MaxDeID_POST,
ACC=horaire2!=null?(horaire2.ACC!=null'horaire2.ACC:null):null
};

Grid_Resultat.DataSource = gridViewSource;
Grid_Resultat.DataBind();
}

Je te remercie et au plaisir.
Carl
Québec/Canada
0
Rejoignez-nous