2010-12-29 5 views
0

Ich muß mit Ausgabe der Daten aus einer XML-Datei in SQL Server speichern, wie: mit Wurzel wirft:xml to SQL Linq oder einfach c mit scharfem Code

<casts> 
    <dirfilms> 
     <dirid>AaB</dirid> 
     <is>A.Bennett</is> 
     <castnote>Actors and notes.</castnote> 
     <filmc> 
     <m> 
      <f>AaB10</f> 
      <t>A Private Function</t> 
      <a>Michael Palin</a> 
      <p>Und</p> 
      <r>podiatrist</r> 
     </m> 
     <m> 
      <f>AaB10</f> 
      <t>A Private Function</t> 
      <a>Maggie Smith</a> 
      <p>Und</p> 
      <r>ambitious wife</r> 
      <awards> 
       <award>BFA</award> 
      </awards> 
     </m> 
     <m> 
      <f>AaB10</f> 
      <t>A Private Function</t> 
      <a>Denholm Elliott</a> 
      <p>Und</p> 
      <r/> 
      <awards> 
       <award>BFA</award> 
      </awards> 
     </m> 
     <m> 
      <f>AaB10</f> 
      <t>A Private Function</t> 
      <a>Richard Griffiths</a> 
      <p>Und</p> 
      <r/> 
     </m> 
     ... (more nodes snipped) ... 
     </filmc> 
    </dirfilms> 
</casts> 
+1

Wollen Sie die ganze XML als ein Stück speichern möchten, oder Sie beabsichtigen, zu „vernichten“, dass die Informationen in relationalen Tabellen für die Lagerung? –

+0

Ja Marc Ich möchte sie für den oben erwähnten Fall in relationalen Tabellen speichern. Für jeden Director gibt es einen Header-Eintrag mit {code, name, note} und für jeden Film haben wir eine andere Tabelle, sagen wir tblMovie {Filmcode, Titel, Schauspieler, gefolgt von dep. info, role-type, role-description und optionaler rolle-name, role-specs} ... etwas ähnliches ... – gaponte69

Antwort

1

Mein Vorschlag für SQL Server 2008:

Die Spalte MyXmlColumn sollte nvarchar (MAX) oder besser XML sein, um sicherzustellen, dass die Daten als gültiges XML eingefügt werden.

1

Verwenden Sie XML als Spaltentyp in der Datenbank. Machen Sie eine linq2sql Mapping (.dbml-Datei) und verwenden Sie so etwas wie:

 XElement xml = XElement.Load(@"c:\myXml.xml"); 
     using (var context = new MyDataContext(connectionStr)) 
     { 
      var entity = new MyTable{XML = xml}; 
      context.MyTables.InsertOnSubmit(entity); 
      context.SubmitChanges(); 
     } 
+0

Lieber Hans, deine Vorschläge sind sehr clever, aber ich kann 2 sql nicht mit verschiedenen Tabellen verknüpfen , wie ich Marc oben erklärt hatte, "Ich würde sie gerne in relationalen Tabellen für den oben erwähnten Fall speichern, wie uns: Für jeden Regisseur wird ein Header-Eintrag mit {code, name, note} und für jeden Film bereitgestellt wir haben eine andere Tabelle, sagen wir tblMovie {Filmcode, Titel, Schauspieler, gefolgt von Abteilungsinfo, Rollentyp, Rollenbeschreibung und optional Rollenname, Rollenspezifikationen} ... etwas ähnliches "... Ihre Antwort ist geschätzt ... danke noch einmal ... – gaponte69