Précédent   Forum des professionnels en informatique > Dotnet > Accès aux données > Linq
Linq Forum d'entraide sur la manipulation de données avec Linq
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/11/2011, 12h36   #1
Membre du Club
 
Inscription : août 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 216
Points : 44
Points : 44
Par défaut Linq To Sql - Tables et classes

Bonjour,
J'ai créé 2 tables de la classe MyClass de la façon suivante :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
    public class DataBase: DataContext
    {
        public Table<MyClass> Table1;
        public Table<MyClass> Table2;
 
        public DataBase(string connection) : base(connection) { }
    }
 
    [Table(Name = "Table")]
    public class MyClass
    {
        [Column(IsPrimaryKey = true)]
        public int ID;
        [Column]
        public double value;
        [etc ...]
    }
Or, lorsque j'insère des données dans la table1 :
Code :
1
2
3
 
   Table1.InsertOnSubmit(myClassObj);
    SubmitChanges();
elles se retrouvent aussi dans la table2 ...
Tout se passe comme ci table1 et table2 n'étaient qu'un seul et même objet ...
J'ai loupé quelque chose ?
flzox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 14h45   #2
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 393
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 27
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 393
Points : 4 089
Points : 4 089
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
Citation:
Envoyé par flzox Voir le message
Tout se passe comme ci table1 et table2 n'étaient qu'un seul et même objet ...
J'ai loupé quelque chose ?
D'abord ce que tu fais n'est pas de la bonne pratique. Quel est l'intérêt d'avoir deux collections partageant la même table dans ta base de données ?

Sinon c'est normal que toute ligne insérée par table1 se répercute dans table2 tout simplement parce que ces deux objets partagent la même table dans ta base de données donc les même données.
__________________
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu

While(!success) { TryAgain(); }
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 15h25   #3
Membre du Club
 
Inscription : août 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 216
Points : 44
Points : 44
Y'a surement un truc que j'ai pas pigé conceptuelement.
Je voyais l'objet Table un peu comme un objet List<>, ça n'a pas l'air d'être le cas.

Je vais donner un exemple un peu plus concret de ce que je veux faire. Je suis en train de développer une appli pour gérer mes comptes, il a donc des opérations, qui sont stockées en base :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
public class DataBase: DataContext
{
  public Table<Operation> operations;
  public DataBase(string connection) : base(connection) { }
}
 
[Table(Name = "TableOperation")]
public class Operation
{
   [Column(IsPrimaryKey = true)]
   public int ID;
   [Column]
   public double value;
    [etc ...]
}
Il y a aussi des opérations récurrentes (mensuelles), que je voulais stocker dans une autre table, c'est pourquoi j'ai écris ceci :

Code :
1
2
3
4
5
6
7
8
 
public class DataBase: DataContext
{
   public Table<Operation> operations;
   public Table<Operation> operationsRec;
 
   public DataBase(string connection) : base(connection) { }
}
Donc en gros il faudrait que la table operation ait un champ en plus pour savoir si c'est une opération récurrente ou non c'est ça ?

Je ne trouve pas ça très pratique car dans ce cas, pour retrouver les quelques opération récurrente (une 10ène, pas plus), il faudra faire une requête sur toute la base, c'est pour ça que je voulais séparer ces données.
flzox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 15h38   #4
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 393
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 27
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 393
Points : 4 089
Points : 4 089
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
Citation:
Envoyé par flzox Voir le message
Donc en gros il faudrait que la table operation ait un champ en plus pour savoir si c'est une opération récurrente ou non c'est ça ?
T'as bien vu Pour pouvoir différencier tes opérations il te faut un champ discriminant. Et à partir de ce champ tu peux utiliser le TPH (Table Per Hierarchy)

Citation:
Envoyé par flzox Voir le message
Je ne trouve pas ça très pratique car dans ce cas, pour retrouver les quelques opération récurrente (une 10ène, pas plus), il faudra faire une requête sur toute la base, c'est pour ça que je voulais séparer ces données.
Bah en ajoutant une colonne discriminante tu pourras effectuer une requête qui te récupère les lignes d'opérations dont tu as juste besoin.
__________________
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu

While(!success) { TryAgain(); }
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 15h46   #5
Membre du Club
 
Inscription : août 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 216
Points : 44
Points : 44
Ok je vais faire comme ça
Je ne connais pas le TPH en revanche. Tu peux m'expliquer rapidement ce que ça implique dans mon cas ?
flzox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h12   #6
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 393
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 27
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 393
Points : 4 089
Points : 4 089
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
Citation:
Envoyé par flzox Voir le message
Je ne connais pas le TPH en revanche. Tu peux m'expliquer rapidement ce que ça implique dans mon cas ?
Ici un exemple d'utilisation.

Sinon pourquoi ne pas utiliser Entity Framework comme ORM ?
__________________
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu

While(!success) { TryAgain(); }
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h17   #7
Membre du Club
 
Inscription : août 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 216
Points : 44
Points : 44
Citation:
Sinon pourquoi ne pas utiliser Entity Framework comme ORM ?
Parce que je ne connaissais pas ...
C'est plus simple ? Plus souple ?
flzox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 16h22   #8
Modérateur
 
Avatar de h2s84
 
Homme Holty Samba SOW
Développeur .NET
Inscription : mars 2007
Messages : 2 393
Détails du profil
Informations personnelles :
Nom : Homme Holty Samba SOW
Âge : 27
Localisation : Sénégal

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mars 2007
Messages : 2 393
Points : 4 089
Points : 4 089
Envoyer un message via MSN à h2s84 Envoyer un message via Skype™ à h2s84
Pour ça je te redirige vers ce thread.
__________________
Les FAQs sur les technologies .Net voir ici
Les cours et tutos sur les technologies .Net voir ici
Les critiques sur les livres parlant des technologies .Net voir ici
Pensez à la balise [CODE]
Pensez au tag si votre problème est résolu

While(!success) { TryAgain(); }
h2s84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2011, 17h25   #9
Membre du Club
 
Inscription : août 2004
Messages : 216
Détails du profil
Informations forums :
Inscription : août 2004
Messages : 216
Points : 44
Points : 44
Je commence tout juste à comprendre Ling to SQL et la mise en place de Entity Framework m'a l'air bien compliquée.
Je ne suis pas sur que ça apporte grand chose à mon "petit projet".
flzox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h45.


 
 
 
 
Partenaires

Hébergement Web