2013-07-06 4 views
0

J'ai une application où je les 3 tableaux dont la structure est comme ci-dessous:Avoir un problème avec les doublons dans le fichier exporté

1) Program 
    -------- 
    Program_ID 
    Description 

2) SubProgram 
    ---------- 
    SubProgram_ID 
    Program_ID 
    Description 

3) Tuning 
    -------- 
    Tuning_ID 
    SubProgram_ID 
    Program_ID 
    Description 

Ex. Tableau Valeurs:

Programme:

Program_ID Description 
------------------------ 
1   ABCD 

Sous-programme

SubProgram_ID Program_ID Description 
----------------------------------------- 
1    1   EFGH 
2    1   IJKL  // Here is the problem 
3    1   IJKL  // Here is the problem 

Tuning

Tuning_ID SubProgram_ID Program_ID Description 
-------------------------------------------------- 
1   1    1   MNOP 
2   2    1   QRST 
3   1    1   UVWX 

Maintenant, j'ai un module où je peux exporter que les enregistrements dans un fichier XML et tout le monde peut importer à nouveau dans leur logiciel où la clé primaire peut différer.

Exporté XML ressemble à ceci:

<?xml version="1.0" standalone="yes"?> 
<DocumentElement> 
<Program> 
    <Program_ID>123</Program_ID> 
    <Description>ABCD</Description> 
</Program> 
<SubProgramList> 
<SubProgram> 
    <SubProgram_ID>1195</SubProgram_ID> 
    <Descr>EFGH</Descr> 
</SubProgram> 
<SubProgram> 
    <SubProgram_ID>1195</SubProgram_ID> 
    <Descr>IJKL</Descr> 
</SubProgram> 
<SubProgram> 
    <SubProgram_ID>1195</SubProgram_ID> 
    <Descr>IJKL</Descr> 
</SubProgram> 
<SubProgramList> 

<TuningList> 
<Tunings> 
    <Program_ID>True</Program_ID> 
    <SubProgram_ID>0</SubProgram_ID> 
    <Description>MNOP</Description> 
</Tunings> 
<Tunings> 
    <Program_ID>True</Program_ID> 
    <SubProgram_ID>0</SubProgram_ID> 
    <Description>QRST</Description> 
</Tunings> 
<Tunings> 
    <Program_ID>True</Program_ID> 
    <SubProgram_ID>0</SubProgram_ID> 
    <Description>UVWX</Description> 
</Tunings> 
</TuningList> 
</DocumentElement> 

Donc mon problème est:
insérer les enregistrements en fonction de description afin Lorsque Sous-programme ont la même description, puis la Tunings sous ce sous-programme sera inséré dans le seul un sous-programme et n'a pas été créé le deuxième.

Comment puis-je identifier le sous-programme parent de l'accord en cours lors de l'importation?

Alors, comment puis-je résoudre le problème?

+0

S'il vous plaît expliquer la question plus, voulez-vous empêcher le double icates en localisant l'entrée préexistante avec la description correspondante et utilisez l'identifiant d'entrée, ou vous essayez déjà cela et ne réussissez pas? – MEYWD

+0

Oui..Si j'utilise l'ID d'entrée de l'enregistrement, mais il peut ne pas être là si d'autres personnes vont importer dans leur logiciel .. Alors c'était le problème .. Comment puis-je identifier le «sous-programme parent» de la perticular ' tuning' –

+0

Est-ce que ma réponse a résolu votre problème? – MEYWD

Répondre

0

Je crois que c'est une décision de conception - il peut varier en fonction de vos besoins d'affaires, mais en général, il devrait ressembler à ce qui suit:

  • vous devriez avoir un point central où vous importez les données pour faire Assurez-vous que la vérification des doublons n'est pas effectuée en parallèle, sinon vous aurez besoin d'un champ d'horodatage pour synchroniser les données en fonction de l'ordre de création
  • Vous devez vérifier s'il existe des enregistrements en double dans les données importées, des descriptions en double ou des doublons identifie et efface ceux-ci ou renvoie une exception de validation
  • I Si vous avez la règle (pas de description en double) pour tous les niveaux (programme, sous-programme, réglage), vous devez d'abord vérifier si le programme est en double (en comparant la description avec les données existantes) dans un dictionnaire de cartographie

    var ProgramIdMapping = new Dictionary<int,int>(); 
    ProgramIdMapping.Add(ImportedDataId, DatabaseId); 
    
  • maintenant, répétez cette opération pour les sous-programmes et les enregistrements de réglage, et quand vous commencez à les insérer dans la base de données que vous recherchez la base de données de parent Id du dictionnaire de cartographie

    var DbProgramId = ProgramIdMapping[subProgram.ProgramId]; 
    
Questions connexes