begin process at 2013 06 19 20:11:13
  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, problème de maj avec paramètre [ par Achm ] Bonjour ! J'ai un petit souci pour mettre à jours mes données : J'ai une fonction : [code=cs]public void UpdateData(Guid id, string nom) { linq to sql [ par casa_sniper ] Bonjour j'ai un probleme concernnant l'access via linq to sql je dois alimenter une gridview par plusieurs tables (utilisateurs ,profil ,magasin)qui ADO.NET, Linq to SQL, entity framework ? Que choisir? je m'y perds, besoin d'explications... [ par Mgiv64 ] Bonjour à tous, Je développe occasionnellement en C# depuis quelques années. Jusqu'à présent je n'avais pas beaucoup besoin d'avoir recours à des ba Différence entre DataSet et Linq To SQL Classes [ par acppfrance ] Bonjour à tous, J'ai travaillé deja avec Linq To SQL Classes et je veux savoir la différence entre Linq To SQL Classes et DataSet. J'ai besoin de vo Le Linq to Sql [ par okosa ] Salut tout le monde,vous êtes les meilleurs.... Juste vous dire que,j'ai un petit problème avec le Linq to Sql,je veux séléctionner que 2 champs dans


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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 : 5,382 sec (3)

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