Fragen zu DataRelations und Constraints

16/04/2009 - 20:30 von Anja Länge | Report spam
Guten Abend,

ich versuche, drei verknüpfte Tabellen einer Datenbank in einer XML-Datei
abzubilden und wollte das über drei DataTables und eine Kombination von
DataRelations realisieren um dann die XML-Datei über die WriteXML-Methode
des DataSets schreiben zu lassen.
Es gab die Exception, daß die Tabelle nicht in zwei geschachtelten
Beziehungen die untergeordnete Tabelle sein könne.
Baue ich von Hand ein XML-File mit der gewünschten Struktur und gebe es
einem DataSet mittels ReadXML, wird das DataSet problemlos erzeugt und...
die entsprechende Tabelle ist Child in zwei Relations.
Auch die hierbei erstellten Constraints kann ich für meinen Export nicht
erzeugen, sondern bekomme die Exception, daß nicht für alle Werte
korrespondierende Parents vorliegen.

Ist das ein Phànomen von CSharp? In die eine Richtung funktioniert das
Erstellen der Relations, in die andere nicht.

Grüße
Anja
 

Lesen sie die antworten

#1 Peter Fleischer
17/04/2009 - 09:00 | Warnen spam
"Anja Lànge" schrieb im Newsbeitrag
news:49e7793c$0$31874$
Guten Abend,

ich versuche, drei verknüpfte Tabellen einer Datenbank in einer XML-Datei
abzubilden und wollte das über drei DataTables und eine Kombination von
DataRelations realisieren um dann die XML-Datei über die WriteXML-Methode
des DataSets schreiben zu lassen.
Es gab die Exception, daß die Tabelle nicht in zwei geschachtelten
Beziehungen die untergeordnete Tabelle sein könne.



Hi Anja,
vermutlich hast du in beiden Beziehungen "Nested" anegegeben. Wenn die
gemeinsame Child-Tabelle nicht eingebettet ist, funktioniert es.

Baue ich von Hand ein XML-File mit der gewünschten Struktur und gebe es
einem DataSet mittels ReadXML, wird das DataSet problemlos erzeugt und...
die entsprechende Tabelle ist Child in zwei Relations.
Auch die hierbei erstellten Constraints kann ich für meinen Export nicht
erzeugen, sondern bekomme die Exception, daß nicht für alle Werte
korrespondierende Parents vorliegen.

Ist das ein Phànomen von CSharp? In die eine Richtung funktioniert das
Erstellen der Relations, in die andere nicht.



Das hat nicht mit C# zu tun. Hier mal eine Demo; ànder mal die zweite
Nested-Anweisung:

using System;
using System.IO;
using System.Data;
using System.Text;

namespace ConsoleApplication1
{
class Program
{ static void Main(string[] args)
{ try
{ DataSet ds = TestData.DS;
MemoryStream ms = new MemoryStream();
ds.WriteXml(ms);
Console.WriteLine(Encoding.Default.GetString(ms.ToArray())); }
catch (Exception ex)
{ Console.WriteLine(ex.Message); }
Console.ReadLine(); } }

public static class TestData
{ public static DataSet DS
{ get
{ DataSet ds = new DataSet();
DataTable dt1 = new DataTable("Tab1");
dt1.Columns.Add("ID", typeof(Int32));
ds.Tables.Add(dt1);
DataTable dt2 = new DataTable("Tab2");
dt2.Columns.Add("ID", typeof(Int32));
ds.Tables.Add(dt2);
DataTable dt3 = new DataTable("Tab3");
dt3.Columns.Add("FK1", typeof(Int32));
dt3.Columns.Add("FK2", typeof(Int32));
ds.Tables.Add(dt3);
DataRow r1 = dt1.NewRow();
r1["ID"] = 1;
dt1.Rows.Add(r1);
DataRow r2 = dt2.NewRow();
r2["ID"] = 2;
dt2.Rows.Add(r2);
DataRow r3 = dt3.NewRow();
r3["FK1"] = 1;
r3["FK2"] = 2;
dt3.Rows.Add(r3);
DataRelation dr1 = new DataRelation("rel1", dt1.Columns[0],
dt3.Columns[0]);
dr1.Nested = true;
ds.Relations.Add(dr1);
DataRelation dr2 = new DataRelation("rel2", dt2.Columns[0],
dt3.Columns[1]);
dr2.Nested = false; // !!!!!!!!
ds.Relations.Add(dr2);
return ds; } } }
}


Viele Grüsse
Peter

Ähnliche fragen