begin process at 2010 02 10 03:36:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

SQL Server

 > 

Linq To Sql


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Linq To Sql

mercredi 2 juillet 2008 à 16:00:05 | Linq To Sql

24 ans

Salut tous le monde
J ai un petit soucis qui est le suivant :

Probleme de fusion de deux Table en une seul table linq
voici le code que j ai ecrit:

Dal

d1 = newDal("Connexion 1");
Table<PYUSER> usr1= d1.GetTable<PYUSER>();

Dal d2 = newDal("Connexion 2");
Table<PYUSER> usr2 = d2.GetTable<PYUSER>();

// fusionner les deux resultats


List
<PYUSER> Res = usr1.Union(usr2).ToList();

est voici le message que j ai eu

"The query contains references to items defined on a different data context."


mercredi 2 juillet 2008 à 22:07:15 | Re : Linq To Sql

Bidou

Administrateur CodeS-SourceS
Bonsoir,
Juste une idée comme ça (j'ai pas essayé): est-ce que tu as fermé les DataContext avant de faire l'Union?



-My Blog-
mercredi 2 juillet 2008 à 23:10:14 | Re : Linq To Sql

nhervagault

Administrateur CodeS-SourceS
Salut

Je pense que le problème vient du fait de l'exécution différée de linq.

Dans ton exemple les deux connexions sont en // et peut etre que linq switche mal entre les datacontexts.

Essaie de passer par des objets intermedaires.
Pour aller sur du linq to objet

//linq to sql
var q1 =
d1.GetTable<PYUSER>().toList();
//linq to sql
var q2 =
d2.GetTable<PYUSER>().toList();

//linq to objet (fusion de deux List<T>
var q3 = q1.Union(q2);


Il y a peut etre un autre moyen pour faire plus performant.

C'est simplement une idée.



jeudi 3 juillet 2008 à 09:20:52 | Re : Linq To Sql

jesusonline

Membre Club Administrateur CodeS-SourceS
Bonjour,

pour moi ce n'est pas possible.

var q1 = ... // ==> création d'un arbre d'expression qui pointe sur la base1
var q2 = ... // ==> création d'un arbre d'expression qu pointe sur la base2

var q3 = ... // ==> création d'un arbre d'expression qui pointe sur ??? 

Linq To SQL ne permet pas de faire des requetes cross database. 

La solution la plus simple est de passer par linq to object, mais ATTENTION aux performances, la solution de nhervagault va te charger toutes les données des 2 tables, la jointure sera faite en .net!
L'autre solution c'est d'utiliser Linq To Entity qui devrait permettre ce genre de choses (à vérifier)
Et enfin, dans base1 tu peux faire un lien vers base2, puis rajouter des synonymes dans base1 qui pointe vers base2, tu n'auras alors qu'une seule baseet donc qu'un context. Mais dans ton cas vu que tu as 2 bases identique ca va pas être cool ... 

Explique nous ce que tu veux faire, j'ai l'impression que tu as une base maitre et plusieurs clients et que tu essayes de faire de la synchro, dans ce cas regarde du coté de "ADO.net Sync Services" ca te fait la synchro tout seul (ou presque ;-) ) 


Cyril - MSP - MCPD ASP.net & MCTS SQL - Consultant indépendant
jeudi 3 juillet 2008 à 10:48:05 | Re : Linq To Sql

24 ans

Bonjour
Je vais vous expliquer mon cas.
J ai une base courante et plusieurs base archive.

et j ai comme objectif de coder la couche DAL qui permet de trouver les données sur l'ensemble des bases

jeudi 3 juillet 2008 à 11:09:18 | Re : Linq To Sql

24 ans

j ai trouvé une autre solution qui est la suivante

Dal

d1 = newDal("Connexion 1");
Table<PYUSER> usr1 = d1.GetTable<PYUSER>();

Dal d2 = newDal("Connexion 2");
List<PYUSER> tmpList = d2.GetTable<PYUSER>().ToList();

// fusionner les deux resultats
// Attacher les PYUSER de la Liste tmpListe dans  Table<PYUSER>
foreach (PYUSER p in tmpList)
   usr1.Attach(p);

mais le probleme c est que lorsque je fais
Grid.DataSource = usr1;
je ne trouve pas les données que j ai attché
jeudi 3 juillet 2008 à 11:12:11 | Re : Linq To Sql

jesusonline

Membre Club Administrateur CodeS-SourceS
hihihi.

Pour moi linq to SQL n'est pas adapté (et plus personnellement je trouve que linq to sql n'est adapté à rien, c'est juste un joué pour faire des démos flashy en 3 click, mais pas utilisable sur de gros projets)
La solution consisterais de passer par du linq to entity (encore en beta pour 2/3 mois) ou tu auras plus de possibilités, tu pourras alors définir ton datacontext et essayer de t'en sortir pour faire des jointures cross-database.

Ou alors tu vois les bases comme 2 bases bien distinct et tu ne fais pas de jointures SQL entre les 2 mais seulement des jointures via linq to object, mais attention aux performances. Dans ton cas ca devrait aller puisque tu ne fais pas de jointure pour restreindre les données mais plutot pour réunir les données.


Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
jeudi 3 juillet 2008 à 11:38:39 | Re : Linq To Sql

jesusonline

Membre Club Administrateur CodeS-SourceS
non, la solution que tu utilises n'est pas une solution, c'est une bidouille. Attention linq est puissant mais il faut bien comprendre les principes sous-jacent, sinon on arrive TRES rapidement à faire des trucs qui fonctionne plus ou moins mais on ne sait absolument pas pourquoi et l'application devient vite très lourde.

La solution de nhervagault fonctionne (je pense :p) mais tu feras la jointure coté client, si tu regardes avec sqlprofiler le traffic de ta base, tu verras 2 requetes et non une requete avec jointure.


Cyril - MVP ASP.net - MCPD ASP.net & MCTS SQL - Consultant indépendant
jeudi 3 juillet 2008 à 16:22:20 | Re : Linq To Sql

24 ans

Est ce que c'est sur que le linq to entities resoud mon probleme
jeudi 3 juillet 2008 à 16:45:53 | Re : Linq To Sql

Bidou

Administrateur CodeS-SourceS
Si jésus le dit, c'est que c'est vrai


-My Blog-

1 2

Cette discussion est classée dans : table, sql, to, dal, linq


Répondre à ce message

Sujets en rapport avec ce message

Filtre sur une association en linq to sql [ par SharpMao ] Salut à vous tous,J'ai un petit problème en linq to sql.J'ai deux tables qui sont reliées, A->B. Mais en plus de l'association sur la clé primaire, j' linq to sql [ par laymouna98 ] salut à tous je veut ajouter à mon projet un fichier de type LinkObjets, c'est un fichier qui à l'extension .dbml, mais le problème c'est ce modèle n' LINQ to SQL / ENTITIES [ par Kikuts ] Bonjour ! Alors voilà je suis en train de monter un Web Service pour que mes composants silverlight (xaml) puissent être "binder" ou bien récupérer de Linq to sql [ par laymouna98 ] salutj'ai fait un pteit exemple avec linq et sql servermaintenent je veut bien changer la base de données au lieu de sql server en oracleest ce que je modification dans un datagrid en utilisant linq to sql [ par jihedines ] Bonjour à tous, j'utilise le datagrid pour afficher les données à l'aide de linq to sql sauf ke g un pb au niveau de la modification ,j'arrive pas à m [Linq to SQL] DataContext - Mise à jour Automatique Tables et contraintes ? [ par TeK55 ] Bonjour à tous, Est il possible de définir un DataContext qui se met à jour automatique lors qu'un des éléments qui le compose à été modifier directe Requetes Linq to Entity [ par Donpi ] Alors c'est l'histoire d'un manchot qui développe en C# avec linq et qui en a un peu marre que rien ne marche...Le problème est pas très compliqué, j' LINQ to SQL - méthode OrderBy générique [ par leati24 ] Bonjour, Je souhaite mettre en place la pagination dans un gridView qui est construit à partir d'un objectDataSource. Pour cela, je passe un paramè Linq to SQL [ par bcazard ] Baptiste Bonjour à tous, Je développe actuellement pour ma société une appli c#(sous Microsoft Visual C# 2008 Express) avec une DB distante sous Micro PROBLEME LINQ to DATASET URGENT : insérer, modifier, supprime [ par Vince62290 ] Bonjour à tous, je dois résoudre absolument mon problème cette semaine (fin de mon projet).Comment peut-on insérer, modifier, supprimer une ligne dans


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales